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