IPアドレスを含む行をどのように削除しますか? [閉鎖]

IPアドレスを含む行をどのように削除しますか? [閉鎖]

次のファイルがあります。

http://example.mx
https://test.com
http://4.3.4.4
http://dev.somedomain.com
http://1.3.4.2

IPのあるエントリを削除したいので、結果は次のようになります。

http://example.mx
https://test.com
http://dev.somedomain.com

私がしたことは次のとおりです。

cat  in.log |  sed  '/^http:\/\/[0-9]/d'  > out.log

しかし、これはうまくいきません。

答え1

しかしそれはする働くあなたの質問に正解がすでに存在しているようです。

$ cat in.log
http://example.mx
https://test.com
http://4.3.4.4
http://dev.somedomain.com
http://1.3.4.2
$ cat  in.log |  sed  '/^http:\/\/[0-9]/d'  > out.log
$ cat out.log
http://example.mx
https://test.com
http://dev.somedomain.com
$

答え2

削除したいようです。ワイヤーあなたの入力に。それ以外にもsed非常に簡単な解決策がありますgrep -v

grep -v 'http://\([0-9]\+\.\)\{3\}[0-9]\+' in.log

catどちらにしても、ここではandパイプは必要ありません。通常cat foo | bar、次のように置き換えることができます。この特定のインスタンスでは、ファイル名をパイプを必要とせず、または必要な引数として渡すことができます。bar < foogrepsed

catシェル純粋主義者は通常、不必要に別々のプロセスを開始するため(そしてcat制御することが目的であるため)、この使用に反対します。ファイルの生成...)。

答え3

行を削除するには、次のフラグをin.log使用できます。-ised

sed -i '/^http:\/\/[0-9]/d' in.log

答え4

これはすでに動作しますが、 /^http:\/\/[0-9]/一致します。

http://1.hello.word 

「フルIP」使用一致/^http:\/\/[0-9\.]*$/

どこ

  • [0-9\.]数字と点を一致させる...
  • *...0回以上..
  • $...ラインが終わるまで。

関連情報