: 나는 약간 앞으로 안에 정규식의 적절한 사용에 의해 의아해하고 있습니다AWK - 액션 내부 (슬래시) 정규식 문을 사용하여 (괄호)를 사용하여
$ awk --version
GNU Awk 3.1.7
행동 내부 /
가 awk
에서 { }
중괄호 슬래시. 예를 들어,이 작품 :
$ echo "4,testing" | awk -F, '/test/ {print $0}'
4,testing
도 (추가 외부 활동 중괄호가 추가 제공) 작품, 대신 슬래시 정규식 구문의, if
및 match
사용 :
$ echo "4,testing" | awk -F, '{if(match($0, "test")) {print $0}}'
4,testing
그래서, 그런 것 같아요, /REGEX/
은 if(match($0, "test"))
과 동일해야합니다. 맞습니까?
$ echo "4,testing" | awk -F, '{if($1==4) {if(match($0, "test")) {print $0}}}'
4,testing
...하지만 예상대로 중첩 작업에서 다음 전체 문자열에 정규식 체크 ... 그리고 match
if
작품에서 중괄호 -
은 어쨌든, 나는 필드 당 몇 가지 테스트를 수행 할 내가 슬래시 정규식으로 if(match(...))
를 교체하려면 다음, 내가 얻을 :
$ echo "4,testing" | awk -F, '{if($1==4) {/test/ {print $0}}}'
awk: {if($1==4) {/test/ {print $0}}}
awk: ^syntax error
사람이 설명 할 수 규칙이 무엇인지, 때 앞으로 사용 정규식 슬래시 - 언제 match()
정규식을 사용할 수 있나요?
$ echo "4,testing" | awk -F, '{if($1==4) {if(/test/) {print $0}}}'
4,testing
... 보인다 있도록 : 액션 내에서, 슬래시 정규식은 if
문의 인수에 있어야합니다
이 글을 쓰는 동안, 나는이 작품 것을 우연히 발견 ...하지만 위의 첫 번째 예에서 정규식은 if()
인수에있는 이 아닌 (적어도 나에게 명백한 방식이 아님)을 감안할 때 나에게 의미가 없나요?
환상적인 설명, @ sudo_O - 특히 속기에 관한 부분이 나를 많이 설명했습니다. 늦게 받아들이는 것에 대한 사과 - 환호! – sdaau