awk 정규식 일치 패턴과 공백

awk 정규식 일치 패턴과 공백

파일이 있습니다 fruits.

ap ple 
ora nge 
pe ar
gra pes
bro ccoli
tom ato
ap ache

파일에 몇 개의 과일이 있는지 확인하기 위해 awk 스크립트를 만들고 싶습니다.

나는 열심히 노력했다

awk -F: '/ap|ora|pe|gra ple|nge|ar|pes/ {sum+=1} END {print sum+0}' fruits

4개의 쌍이 정확히 일치하므로 4를 반환해야 하지만 ap ache이 경우 공간이 등록되지 않았기 때문에 5를 반환하는 것 같습니다.

답변1

정규식 ap|ora|pe|gra ple|nge|ar|pes일치

ap또는 ora또는pe 또는 gra ple 또는 nge또는 ar또는pes

사이에 공백이 있는 두 개의 별도 대안을 일치시키려면 일부 그룹화를 추가해야 합니다.

$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/' fruits 
ap ple 
ora nge 
pe ar
gra pes

$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/ {sum+=1} END{print sum}' fruits 
4

기본값이 전체 레코드와 일치하므로 -F공백이 아닌 값으로 설정할 필요가 없습니다 ./pattern/

관련 정보