次のファイルがあります。
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 < foo
grep
sed
cat
シェル純粋主義者は通常、不必要に別々のプロセスを開始するため(そしてcat
制御することが目的であるため)、この使用に反対します。猫ファイルの生成...)。
答え3
行を削除するには、次のフラグをin.log
使用できます。-i
sed
sed -i '/^http:\/\/[0-9]/d' in.log
答え4
これはすでに動作しますが、
/^http:\/\/[0-9]/
一致します。
http://1.hello.word
「フルIP」使用一致/^http:\/\/[0-9\.]*$/
どこ
[0-9\.]
数字と点を一致させる...*
...0回以上..$
...ラインが終わるまで。