我在 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
这很好用。