如何使用shell脚本删除多个单词和相应的文件行

时间:2014-07-18 12:16:21

标签: shell

我有一个文本文件,其中的字段用','符号分隔。我想删除包含'S'和'A'等图案的行。

例如,假设我的文件数据如下:

S,F,T,Y
B,I,J,O
S,O,L,H
R,I,O,P
A,H,K,L
U,I,O,P
A,I,S,U

我已尝试过单一模式的代码,请告诉我如何在此命令中使用这两种模式:

sed -i '/S/d' 'file.txt'

3 个答案:

答案 0 :(得分:2)

试试这个命令,你应该逃避' |'字符,代表交替。 (A | B,其中A和B可以是任意RE,创建一个与A或B匹配的正则表达式)

 sed -e '/S\|A/d' file.

 sed -r -e '/S|A/d' file.

答案 1 :(得分:0)

这是一个使用grep的工作解决方案(我不熟悉sed不幸......):

grep -vE 'S|A' input.txt > output.txt

它将在output.txt中写入input.txt的所有行,其中不包含' A'或者' S'。

输出:

B,I,J,O
R,I,O,P
U,I,O,P

答案 2 :(得分:0)

@zhujs为您的示例提供了相应的解决方案,但为了将来参考,您还可以使用多个multiple

sed指定-e个命令
sed -e '/A/d' -e '/D/d' file