Awkで正規表現数量子を使用する

Awkで正規表現数量子を使用する

Awk正規表現で数量子を使用する際に問題があります。

awk -F"|" -v col="$COUNTER" '$col ~ /doi\/tm-[a-z0-9]/ { print $col } ' OFS=, tmp.csv

これはうまくいきますが、[a-z0-9]クラスに8文字の制限を指定したいと思います。

だから私はこれをしました:

awk -F"|" -v col="$COUNTER" '$col ~ /doi\/tm-[a-z0-9]{8}/ { print $col } ' OFS=, tmp.csv

うまくいきません。

awk -F"|" -v col="$COUNTER" '$col ~ /doi\/tm-[a-z0-9]\{8\}/ { print $col } ' OFS=, tmp.csv

いいえ。

これはUbuntu 20.04システムにあります。

答え1

実際、デフォルトのawkをgawkに変更することで問題が解決しました。

gawk -v col="$COUNTER" 'BEGIN{ FS = "|" } $col ~ /doi\/tm-[a-z0-9]{8}/ { print $col } 1' OFS=, tmp.csv

これは素晴らしい作品です。

関連情報