我有一个文件file1.txt
。除了包含“①”或“城市”的行之外,我想删除包含单词“中心”,“农场”或“中间”等的每一行。如何删除包含特定单词的所有行,但包含某些单词的行除外?
- 删除和异常的列表非常长。
- 这些文件是UTF-8。
如何删除包含这些单词中的至少一个的每一行,但不包括那些有一些例外的行?
我有一个文件file1.txt
。除了包含“①”或“城市”的行之外,我想删除包含单词“中心”,“农场”或“中间”等的每一行。如何删除包含特定单词的所有行,但包含某些单词的行除外?
如何删除包含这些单词中的至少一个的每一行,但不包括那些有一些例外的行?
这可能会为你工作:
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
sed -r '/①|city/{p;d};/center of|farm|middle of/d' file1.txt
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。
这将复制诸如“这是一个城市”等行。 – hvd 2012-04-22 18:34:12
@hvd:你说的没错!我纠正了我现在的脚本,但与kev的解决方案不一样。 – 2012-04-22 19:55:45
我总是有点怀疑先做错了什么,然后再修复它......在这种情况下,重复行然后删除原来的。这是没有必要的。您可以使用'b'(如在potong的答案中)。 – hvd 2012-04-22 08:14:32