如何删除文件中所有带有“.png”的行?

如何删除文件中所有带有“.png”的行?

我有一个网址列表,其中一些指向图像:

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

相关内容