6

たとえば、ファイルには次の内容が含まれます。

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て、パターンが一致する場合は行を削除したい。

また、これを単一のコマンドで実行したいと考えています。

4

5 に答える 5

10

別の解決策:

 awk '!/10.45.56.84|10.81.51.92/' file
于 2012-10-06T14:46:15.793 に答える
6

あなたはこれを行うことができます:

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 つと一致すると解釈されます。

これが役立つことを願っています=)

于 2012-10-06T14:31:21.897 に答える
4
grep -Fv -f <(echo $'10.45.56.84\n10.81.51.92') filename
于 2012-10-06T18:54:10.017 に答える
4

これはうまくいくかもしれません(GNU sed):

sed -r '/10\.(45\.56\.84|81\.51\.92)/d' file
于 2012-10-06T17:10:12.867 に答える