![如何删除文件中所有带有“.png”的行?](https://linux22.com/image/17549/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E4%B8%AD%E6%89%80%E6%9C%89%E5%B8%A6%E6%9C%89%E2%80%9C.png%E2%80%9D%E7%9A%84%E8%A1%8C%EF%BC%9F.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
意味着“就地编辑”。在执行此命令之前先备份您的文件,或者如果您不确定,请先尝试不使用该选项。-i
sed
-i
该I
标志用于执行不区分大小写的匹配。
答案3
您可以在 Ex 模式下使用 Vim:
ex -sc 'g/\.png/d' -cx file
g
全局搜索d
删除x
保存并关闭
答案4
如果你有sponge
您可以像这样交换文件的内容:
grep -E -iv "\.(png|jpg|jpeg|gif)" file | sponge file