grep
패턴의 부정적인 부분을 일치시키기 위해 (또는 다른 도구)를 어떻게 사용할 수 있습니까 ?
예
php cronjob.php test
php cronjob.php scan_document
php cronjob.php scan_document -v
php cronjob.php scan_documenttest -v
php cronjob.php scan_document_callback_retry
위의 시나리오에서 행 2와 행 3을 일치시켜야 합니다.
php cronjob.php scan_document
php cronjob.php scan_document -v
나는 이 명령을 사용한다
ps --noheader -o pid,ppid,cmd -C php | grep "cronjob.php scan_document"
근데 내가 원하는 것보다 더 잘 어울리는 것 같아
php cronjob.php scan_document
php cronjob.php scan_document -v
php cronjob.php scan_document_callback_retry
답변1
다음과 같은 경우를 모두 일치시키려는 것 같습니다.단어 경계 \b
뒤쪽에 scan_document
:
$ grep 'cronjob\.php scan_document\b' << EOF
php cronjob.php test
php cronjob.php scan_document
php cronjob.php scan_document -v
php cronjob.php scan_documenttest -v
php cronjob.php scan_document_callback_retry
EOF
php cronjob.php scan_document
php cronjob.php scan_document -v
마침표를 이스케이프 처리했습니다. cronjob.php
그렇지 않으면 단일 문자와 일치할 수 있습니다.
답변2
당신 grep
은 그 일을 하고 있고, 당신의 패턴은 문자열이 어떻게 끝나는지에 대해 아무 것도 말해주지 않습니다. 그런 다음 추가해야 합니다.
$ grep "cronjob\.php scan_document$\|cronjob\.php scan_document[[:blank:]].*$" file
php cronjob.php scan_document
php cronjob.php scan_document -v
우리는 grep
두 가지 모드를 입력합니다. 하나는 줄의 끝이고 $
다른 하나는 공백이며 다음 내용입니다 [[:blank:]].*$
.
답변3
PHP 스크립트의 첫 번째 매개변수는 다음과 같아야 합니다 scan_document
. 5
$ awk '$3 == "scan_document"' file
php cronjob.php scan_document
php cronjob.php scan_document -v