![Awk에서 정규식 수량자 사용하기](https://linux55.com/image/181858/Awk%EC%97%90%EC%84%9C%20%EC%A0%95%EA%B7%9C%EC%8B%9D%20%EC%88%98%EB%9F%89%EC%9E%90%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0.png)
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
이것은 훌륭하게 작동합니다.