我有一个名为file1.txt
的文件。除了包含“①”或“city”的行外,我想删除包含单词“center of”,“farm”或“middle of”等的每一行。
如何删除至少包含其中一个单词的每一行,而不删除那些有一些例外的行?
答案 0 :(得分: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.txt
和exceptions.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
答案 1 :(得分:2)
sed -r '/①|city/{p;d};/center of|farm|middle of/d' file1.txt
答案 2 :(得分: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}'
打印
a b
b c
e f
是每行,不包含c或d,只有包含c或d的行,如果它们包含a或b。