我试图使用sed来执行以下操作:
在文件中看起来像:
FirstLine SecondLineEEE AAAblablabla ForthLineEEE FifthLine LastLine
我想删除EEE(但保留第二行的其余部分),整行以AAA开头,保持文件的其他部分不变。
预期结果是(如图所示,如果以下行不以AAA开头,则会保留,这就是我需要匹配多行的原因。)
FirstLine SecondLine ForthLineEEE FifthLine LastLine
我该怎么办?提前谢谢!
答案 0 :(得分:2)
这可能对您有用:
echo -e "FirstLine\nSecondLineEEE\nAAAblablabla\nLastLine" |
sed '/EEE$/{N;s/EEE\nAAA.*//}'
FirstLine
SecondLine
LastLine
答案 1 :(得分:1)
fge@erwin ~ $ sed '/EEE$/d; /^AAA/d' <<EOF
> FirstLine
> SecondLineEEE
> AAAblablabla
> LastLine
> EOF
FirstLine
LastLine
/re/d
将从匹配正则表达式re
的输入中删除所有行。根据您的需要调整模式。
答案 2 :(得分:1)
可能这可行 -
sed '/EEE$/N;s/\(.*\)EEE\nAAA.*/\1/' filename
[jaypal:~/Temp] cat file
FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
LastLine
[jaypal:~/Temp] sed '/EEE$/N;s/\(.*\)EEE\nAAA.*/\1/' file
FirstLine
SecondLine
ForthLineEEE
FifthLine
LastLine