パターンマッチングにおける変数と正規表現の組み合わせ

パターンマッチングにおける変数と正規表現の組み合わせ

3つの文字と3〜4つの数字からなる列をファイルから検索したいと思います。例えば。

if ( $1 ~ /^[A-Z][A-Z][A-Z][0-9][0-9][0-9]/) 

しかし、この3文字が変数として必要なので結果を探しています。

SP="ABC" 
if ( $1 ~ /^/SP/[0-9][0-9][0-9]/)>

しかし、これはうまくいきません。検索パターンで変数と正規表現を組み合わせる方法は?

ベストアンサー1

SP="ABC" 
if ( $1 ~ "^" SP "[0-9]{3}")

接続してくださいひもただし、代わりに/xxx/sは実際に正規表現一致演算子に近いので、解析規則が混乱する可能性があります(実装によって異なる場合があります)。

$1 ~ /ABC/ /BCD/

これは、(一致するかどうかに応じて1または0)と(一致するかどうかによって1または0)の接続で一致を連結するか、一致する$1ペア(0または0)を連結するように見えます。 1) 混同される可能性のある match を使用する場合。ただし、この演算子は除算演算子と混同される可能性があるため、他の演算子(ここでは連結演算子など)と一緒に使用するとうまく機能しません。/ABC/$0/ABC//BCD/$0/BCD/$1/ABC/$0/BCD//regexp//

しかし、括弧を使用すると興味深くなります(読むSUV)行動:

$ echo 11 ab | gawk '{print $1 ~ /a/ (/b/)}'
1
$ echo 11 ab | bwk-awk '{print $1 ~ /a/ (/b/)}'
01
$ echo b | bwk-awk '{print /a/ - (/b/)}'
0-1

(後者は/a/(0)をの結果と結び付けた結果です- (/b/)。)


では、$1 =~ "^" SP "[0-9]{3}"SPの内容はまだ正規表現として扱われます(そうであれば、...3つの点ではなく3つの文字と一致)。

if (index($1, SP) == 1 && substr($1, length(SP)+1) ~ /^[0-9]{3}/)

おすすめ記事