AWK는 정규 표현식이 아닌 문자열과 일치합니다.

AWK는 정규 표현식이 아닌 문자열과 일치합니다.

문자열을 AWK와 일치시키는 방법은 무엇입니까?

string 이 있다고 가정하면 [(*.+string 을 포함하는 문자열과만 일치해야 합니다 [(*.+.

문자열은 사용자가 입력하므로 정규식을 이스케이프 처리할 수 있는 cli 유틸리티를 알고 있으면 작동할 수도 있습니다.

편집하다:

foo[(*.+bar또한 해당 문자열을 포함하는 문자열 과도 일치해야 합니다 .

답변1

awk문자열 비교에는 연산자를 사용 ==하고 index(haystack, needle)문자열 검색에는 함수를 사용하세요.

read -r string # user types [(*.+
{ echo 'stuff [(*.+ stuff'; echo ')]*.+'; } | awk -v string="$string" 'index($0, string)'
# output: 'stuff [(*.+ stuff'

답변2

기본적으로 awk는 "" 안의 문자를 문자열로 처리하고 // 안의 문자를 정규식으로 처리합니다.

[root@me ~]# echo "[(*.+" | gawk '"[(*.+"'
[(*.+
[root@me~]# echo "[(*.+" | gawk '/[(*.+/'
gawk: /[(*.+/
gawk:  ^ unterminated regexp
gawk: fatal: Unmatched [ or [^: /[(*.+//

관련 정보