awk: 패턴을 찾을 수 없으면 파일 끝에 텍스트를 추가하세요.

awk: 패턴을 찾을 수 없으면 파일 끝에 텍스트를 추가하세요.

awk어떻게 하면 하단에만 텍스트를 추가할 수 있나요 ?패턴을 찾을 수 없는 경우파일에?

이것은 작동하지 않습니다:

awk '{if ($0 !~ /pattern/) {print}; END {print "someText"}}' file

파일은 1MB 미만으로 작습니다.

답변1

또 다른 awk방법은 대용량 파일을 처리할 때 더 빠르며 한 번만 종료하면 됩니다.무늬다음과 같은 경우 파일에 무언가를 찾아 추가하세요.무늬찾지 못했습니다.

awk '/pattern/{found=1; exit}; END{ if(!found) print "append" >>FILENAME }' infile

또는 다음을 사용하십시오 grep.

<infile grep -q pattern || echo 'appending...' >>infile

답변2

다음이 작동합니다.

awk '/pattern/ {found=1} {print} END{if (!found) print "someText"}' file

그러면 전체 파일이 선험적으로( {print}무조건적인 규칙) 인쇄된 다음 패턴을 찾습니다. 발견되면 플래그를 설정합니다( {found=1}조건은 /pattern/, 와 동일 $0 ~ /pattern/). 파일 끝에 플래그가 설정되어 있지 않으면 "someText"인쇄됩니다.

다음과 같이 출력을 새 파일로 리디렉션할 수 있습니다.

awk ' <see above> ' file > newfile

또는 최신 버전의 GNU가 있는 경우 awk"현재 위치" 편집 기능을 사용하십시오(주의하세요!).

awk -i inplace ' <see above> ' file

관련 정보