문자열을 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 [^: /[(*.+//