2017-05-30 38 views
-1

線我有一個文件,如下:
如何使用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但它不起作用。

+0

是我不太清楚第一行和2on行之間有什麼區別(要刪除?)。空白空間?兩者都適合'Thumb [任何字符,除了/]。你提到的jpg'模式。 – MarcM

+0

是grep,參數「-xv」無法正常工作? –

+0

@MarcM'Thumb' +'包含斜槓的東西'''''.jpg' ---刪除。 'Thumb' +'不包含斜槓的東西'+'.jpg' ---不要刪除。 – Yves

回答

0

如果文件名必須開始用拇指和隨後的一個或多個字數(沒有斜槓)和與JPG格式,你可以使用正則表達式像這樣的:

Thumb[^\/]*\.jpg 

demo

+0

我試過了'sed -i - e'#Thumb [^ \ /] * \。jpg#!d'file',它仍然不起作用。 – Yves

+0

sed -i -e'/Thumb[^\/]*\.jpg/!d'file --- This works。謝謝。 – Yves

+0

@Yves您可以將此答案標記爲解決方案,以表示感謝:-) – Nino