web-dev-qa-db-ja.com

AIX-変数を含む複数の文字列のパターンマッチングにegrepを使用

文字列と変数のセットにパターンマッチングを実行できるegrepコマンドを考え出そうとしています。これまでのところ、私は以下を使用しています:

ps -ef <uid> | egrep "string1|string2" | egrep -v "string4|string5" | grep -v "${variable}"

これは機能しますが、私は統一された効率的な構文を作成しようとしています。

Linuxでは次のコマンドを動作させることができましたが、AIXでは動作しませんでした。

ps -ef <uid> | egrep "string1|string2" | grep -v "${variable}\|string4\|string5" 

私はmanページを調べてegrep-cなどを試しましたが、組み合わせを機能させることができませんでした。

1
Jay

Grepコマンドとegrepコマンドを混在させており、grepに必要な-Eフラグを削除して、|を代替正規表現として解析するようにしています。または、egrepを最後まで使用します。

次のいずれかを使用します。

ps -ef | egrep "string1|string2" | egrep -v "${variable}|string4|string5"

または

ps -ef | egrep "string1|string2" | grep -Ev "${variable}|string4|string5"

... variable(または、さらに言えば、さまざまなstringN)の正規表現トークンをエスケープするように注意してください。

参照: 正規表現がXで機能するのに、Yでは機能しないのはなぜですか?

2
Jeff Schaller