2012-04-22 170 views

回答

3

這可能會爲你工作:

sed -i '/center of\|farm\|middle of/{/①\|city/!d}' file1.txt 

sed -i '/center of/ba 
     /farm/ba 
     /middle of/ba 
     b 
     :a 
     /①/b 
     /city/b 
     d' file1.txt 

,如果你有一個words.txtexceptions.txt文件,使用:

sed '/\*exceptions\*/{h;s/.*/:a/p;d} 
    x 
    /./{x;s|.*|/&/b|p;$!d;s/.*/d/;q} 
    x 
    s|.*|/&/ba|' words.txt - <<<"*exceptions*" exceptions.txt > file.sed 
sed -i -f file.sed file1.txt 
2
sed -r '/①|city/{p;d};/center of|farm|middle of/d' file1.txt 
+0

我總是有點懷疑先做錯了什麼,然後再修復它......在這種情況下,重複行然後刪除原來的。這是沒有必要的。您可以使用'b'(如在potong的答案中)。 – hvd 2012-04-22 08:14:32

1
sed '/blacklist/{/whitelist/p;d}' file 

刪除黑名單,除了它是在白名單:

echo -e "a b\nb c\nc d\nd e\ne f" | sed '/c\|d/{/a\|b/p;d}' 

打印含有C或D僅當

a b 
b c 
e f 

這是每一個線路,它不含有c或d,以及線它們包含a或b。

+0

這將複製諸如「這是一個城市」等行。 – hvd 2012-04-22 18:34:12

+0

@hvd:你說的沒錯!我糾正了我現在的腳本,但與kev的解決方案不一樣。 – 2012-04-22 19:55:45

相關問題