Bash:删除除1之外的所有出现的模式

时间:2017-05-26 11:41:53

标签: bash sed

我需要删除除1之外的所有模式,但是我无法在Bash脚本中使用它。 我试过了

sed -e 's/ /\\ /g' -e 's/\\ / /1' 

sed ':a;s/\([^ ]* .*[^\\]\) \(.*\)/\1\\ \2/;ta'

但遗憾的是,它们都没有达到预期的效果。

有人能帮帮我吗? 先感谢您!

2 个答案:

答案 0 :(得分:0)

您是否尝试删除重复的空格?

如果这是正确的尝试     sed -e's / + / / g'

使用*的问题是它也匹配0个出现的模式,你必须使用+代替。

最好的问候,格奥尔格

答案 1 :(得分:0)

没有样本输入,我会猜测,也许它会有所帮助:

 cat file

header for file
1111
header for file
1111
2222
header for file
3333
4444
5555

awk '/header/&&c++>0 {next} 1' file

header for file
1111
1111
2222
3333
4444
5555

虽然我不是sed

中最伟大的人
sed '1!{/^header/d;}' file