답변:
다음과 같은 경우 단락 평가를 수행하십시오 grep.
grep -q 'search_pattern' /file && : >/newfile
grep -qSTDOUT에서 출력을 생성하지 않고 0패턴이 파일에서 발견되면 종료 상태로 종료 됩니다.
패턴이 발견되면 ( &&) 파일 /newfile을 기준 으로 파일 을 작성하십시오 : >/newfile.
일반적인 touch /newfile접근 방식을 사용하거나 bash빈 리디렉션 >/newfile을 수행 할 수도 있습니다.
참고로 파일이 이미 존재 touch하면 파일을 자르지 않고 관련 타임 스탬프 만 변경합니다. 그리고 EOF를 수동으로 보내야하는 >/newfile모든 쉘 (예 :에서 zsh) 에서는 빈 리디렉션 이 지원되지 않습니다 .
:합니까?
:줄임말은 true항상 종료 상태 0으로 종료하는 no-op 명령입니다.
system()명령 과 함께 awk를 사용할 수 있습니다 . 이 경우 /pattern/발견되면, 코드 블록은 {}우리가 부르는 경우에 실행됩니다 touch /tmp/my_file.txt를 통해 system()명령.
아래 예는 내 사용자가있는 경우 임시 파일을 만드는 것을 보여줍니다 /etc/passwd.
$ awk '/xieerqi/{system("touch /tmp/my_file.txt")}' /etc/passwd
$ ls -l /tmp/my_file.txt
-rw-rw-r-- 1 xieerqi xieerqi 0 1月 25 07:58 /tmp/my_file.txt
또는 파일로 리디렉션을 사용할 수 있습니다.
awk '/xieerqi/{f="/tmp/my_file.txt";print "" > f;close(f)}' /etc/passwd
grep검색하는 데 사용 합니다. 이-q옵션은 모든 출력을 억제하고grep종료 코드 를 통해 일치 / 불일치를 반환 하며 이는 쉽게 테스트 할 수 있습니다.