file1.txt /file2.txt 파일이 있습니다. awk 명령을 실행하고 "Type header call_header"와 "END" 사이의 경계 검색을 수행하면 END 아래 줄도 인쇄됩니다. 예:-
파일 1.txt
Type header call_header
abc , def , ghi ,
jkl ,mno
END
Define call_header
type as call_header
phil2.txt
Type head call_header
data1, data2, voice ,
mms , mms2
END
Define call_header
type as call_header
나는 시도했다:
awk '/^Type (header|head) call_header$/,/^END?$/' {print} file1.txt
그러나 다른 줄도 인쇄합니다.
다음 데이터만 필요합니다.
Type header call_header
abc , def , ghi ,
jkl ,mno
END
답변1
귀하의 awk
통화가 잘못되었습니다:
awk '/^Type (header|head) call_header$/,/^END?$/' {print} file1.txt
여기서는 awk
이라는 파일에 대한 검색이 수행됩니다 {print}
.
전체 스크립트는 작은따옴표로 묶어야 합니다.
awk '/^Type (header|head) call_header$/,/^END?$/ {print}' file1.txt
또는 대안으로(첫 번째 정규식을 약간 단축하고 완전히 제거 { print }
),
awk '/^Type head(er)? call_header$/,/^END?$/' file1.txt
OpenBSD awk
및 GNU로 mawk
테스트되었습니다 awk
.
의 경우 sed
이는 위와 매우 유사합니다.
sed -nr '/^Type head(er)? call_header$/,/^END?$/p' file1.txt