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
2つのモードを入力します。 1つは行の終わり、$
もう1つは空白、次の内容です[[:blank:]].*$
。
答え3
PHPスクリプトの最初のパラメータは次のようになりますscan_document
。 5
$ awk '$3 == "scan_document"' file
php cronjob.php scan_document
php cronjob.php scan_document -v