如何使用sed删除不包含模式

时间:2017-05-30 09:17:15

标签: regex linux bash unix sed

我的文件如下:

Thumb Sri Lanka/Anuradhapura/Thumb Anuradhapura.jpg
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_b.jpg
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_d.jpg
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_f.jpg
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_l.jpg
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_r.jpg   
Thumb Sri Lanka/Anuradhapura/vtour/panos/Anuradhapura.tiles/mobile/pano_u.jpg
Thumb Sri Lanka/Anuradhapura/vtour/plugins/fps.xml
Thumb Sri Lanka/Anuradhapura/vtour/plugins/gyro2.js

我需要删除除第一行以外的所有行,这意味着如果行包含Thumb[any characters except /].jpg,则不应删除这些行。

我尝试使用sed来执行此操作,但我不知道如何编写正则表达式。

我试过这样的话:sed -i -e '.*Thumb^(/)\.jpg!d' file但是它没有用。

1 个答案:

答案 0 :(得分:0)

如果filename必须以Thumb开头,然后是一个或多个字符(没有斜杠)和jpg,你可以像这样使用正则表达式:

Thumb[^\/]*\.jpg

demo