数百行の出力を返すコマンドがあり、ps -ef
ほぼ同じパターン(最後の数字を除く)をgrepし、各パターンの単一インスタンスを返す必要があります。例:
このps -ef
特定のコマンドは数十行を出力し、各行にはランダムに割り当てられた文字列またはsvc-0
0svc-5
から5までの数字が含まれていますsvc
。これはgrep -Eo 'svc-[0-5]'
パターンマッチングを実行し、すべての行のすべてのインスタンスを返します。svc-0
andの存在を確認するだけですsvc-5
。私が望む出力は次のとおりです。
svc-0
svc-5
次のように行が連続して複数回繰り返されることが多いため、-m2
grepに追加することはできません。svc
svc-5
svc-5
svc-5
svc-5
svc-5
svc-0
svc-0
svc-0
svc-0
svc-0
答え1
awkフィルタを使用して、2つの目的のパターンを見つけることができます。どちらも見つかった場合は正常に終了し、それ以外の場合は「失敗」で終了します。
ps -ef ... | awk '/svc-0/ { zero++; } /svc-5/ { five++; } END { if (zero && five) exit 0; exit 1; }'