在 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

这很好用。

相关内容