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

이것은 훌륭하게 작동합니다.

관련 정보