grep コマンドから複数パターンの単一インスタンスを返す

grep コマンドから複数パターンの単一インスタンスを返す

数百行の出力を返すコマンドがあり、ps -efほぼ同じパターン(最後の数字を除く)をgrepし、各パターンの単一インスタンスを返す必要があります。例:

このps -ef特定のコマンドは数十行を出力し、各行にはランダムに割り当てられた文字列またはsvc-00svc-5から5までの数字が含まれていますsvc。これはgrep -Eo 'svc-[0-5]'パターンマッチングを実行し、すべての行のすべてのインスタンスを返します。svc-0andの存在を確認するだけですsvc-5。私が望む出力は次のとおりです。

svc-0
svc-5

次のように行が連続して複数回繰り返されることが多いため、-m2grepに追加することはできません。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; }'

関連情報