たとえば、ファイルには次の内容が含まれます。
10.45.56.84 raj
10.49.31.81 mum
10.49.31.86 mum
10.81.51.92 guj
10.45.56.116 raj
10.45.56.84 raj
10.45.56.84
上記のファイルを検索し10.81.51.92
て、パターンが一致する場合は行を削除したい。
また、これを単一のコマンドで実行したいと考えています。
別の解決策:
awk '!/10.45.56.84|10.81.51.92/' file
あなたはこれを行うことができます:
sed -e '/10[.]45[.]56[.]84/d;/10[.]81[.]51[.]92/d' file
これには、セミコロンで区切られた 2 つの sed "d" delete コマンドがあります。ただし、各コマンドの前にあるスラッシュで囲まれたそれぞれのパターンに一致する場合にのみ実行されます。
grep を使用することもできます。
grep -Ev '10[.]45[.]56[.]84|10[.]81[.]51[.]92' file
「-v」フラグは、パターンに一致しない行のみを出力するように grep に指示し、OR 演算子「|」を使用します。どちらのパターンにもマッチします。「-E」フラグが使用されているため、OR 演算子をバックスラッシュでエスケープする必要はありません。
どちらの場合も、括弧の間にピリオドを配置します。それ以外の場合、ピリオドは任意の文字に一致する演算子として使用されます。1 対の大括弧内に複数の文字を配置できます。これらの文字は、指定された文字の 1 つと一致すると解釈されます。
これが役立つことを願っています=)
grep -Fv -f <(echo $'10.45.56.84\n10.81.51.92') filename
これはうまくいくかもしれません(GNU sed):
sed -r '/10\.(45\.56\.84|81\.51\.92)/d' file