【问题标题】:Bash: Remove all occurring pattern except 1Bash:删除所有出现的模式,除了 1
【发布时间】:2017-10-27 07:09:27
【问题描述】:

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

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

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

但不幸的是,两者都没有达到预期的效果。

有人可以帮助我吗? 先感谢您!

【问题讨论】:

  • 请在您的问题中添加示例输入和该示例输入所需的输出。
  • 您的第一次尝试似乎完全符合您的要求。所以你应该提供更多关于你想要什么的细节。
  • 也许你想要sed -e 's/ /\\ /g' -e '1,/ /s/\\ / /'
  • 抱歉,它应该删除的模式是PasswordAuthentication no

标签: bash sed


【解决方案1】:

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

 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    

【讨论】:

  • 它所做的只是列出我需要搜索模式的整个文件,但实际上并没有应用它。您介意告诉我如何实际应用这些更改吗?
  • 能否请您显示您的输入和所需的输出,没有它们我猜。谢谢。
【解决方案2】:

您是否要删除重复的空格?

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

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

最好的问候,乔治

【讨论】:

  • 我正在尝试删除 /etc/ssh/sshd_config 中的 PasswordAuthentication no
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多