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

sim*_*ico 4 sed tr

我有一个 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
Run Code Online (Sandbox Code Playgroud)

如何从文件中删除这些行?

pol*_*ial 14

cat file | grep -v "\.png" >new_file_without_pngs
Run Code Online (Sandbox Code Playgroud)

更新评论:

egrep -iv "\.(png|jpg|jpeg|gif|etc)" file >new_file
Run Code Online (Sandbox Code Playgroud)


ulo*_*sEI 6

对于就地编辑变体,您可以使用sed如下所示:

$ sed -i -r 's/.*\.(png|jpg).*//I' file
Run Code Online (Sandbox Code Playgroud)

它将删除包含.png.jpg直接包含在文件中的行。-i传递给的选项sed意味着“就地编辑”。在执行此命令之前备份您的文件,或者-i如果您不确定,请先尝试不带选项。

I标志是执行不区分大小写的匹配。

  • 如何使用 sed 删除命令 'd': sed -i -r '/\.(png|jpg)$/I d' file (5认同)
  • 您可以向 -i 添加扩展名,以便创建备份文件: sed -i .bak -r 's/.*\.(png|jpg).*//I' file (3认同)
  • +1 对“use `d`”评论:使用 `s/.*blah.*//` 会留下空行,不会删除行。 (3认同)