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}/)