ファイルから「.png」を含む行をすべて削除するにはどうすればよいですか?

ファイルから「.png」を含む行をすべて削除するにはどうすればよいですか?

URLのリストがあり、その一部は画像を指しています。

http://s.thebrighttag.com/iframe?c=A5lqOqP
http://s.wordpress.com/imgpress?resize=136,136&url=http%3A%2F%2Fdata.whicdn.com%2Fimages%2F2833524%2F4thofJuly-collage_large.jpg%3F1278084193

ファイルからこの行をどのように削除できますか?

答え1

cat file | grep -v "\.png" >new_file_without_pngs

更新されたコメント:

egrep -iv "\.(png|jpg|jpeg|gif|etc)" file >new_file

答え2

内部編集バリアントでは、sed次のように使用できます。

$ sed -i -r 's/.*\.(png|jpg).*//I' file

.pngファイルに含まれているか直接含まれている行を削除します。渡されるオプションは、.jpg「所定の位置で編集」を意味します。このコマンドを実行する前にファイルをバックアップしてください。わからない場合は、まずこのオプションを使用せずに試してみてください。-ised-i

このIフラグは、大文字と小文字を区別しない一致を実行するために使用されます。

答え3

ExモードでVimを使用できます。

ex -sc 'g/\.png/d' -cx file
  1. gグローバル検索

  2. d削除

  3. x保存して閉じる

答え4

お持ちの場合sponge次のようにファイルの内容を置き換えることができます。

grep -E -iv "\.(png|jpg|jpeg|gif)" file | sponge file

関連情報