【问题标题】:How to replace 2 characters if they are side by side in bash?如果它们在bash中并排,如何替换2个字符?
【发布时间】:2021-03-21 11:38:23
【问题描述】:

我希望仅替换并排的字符串中的 2 个字符。

我现在的输出

hu1.cqf51:qu-2/2
hu2.cqf55:qe-2/2
hu2.cqf41:qe-2/2

第一行不正确,因为它有“qu”而不是“qe” 我正在寻找用 qe 替换 qu 而不替换字符串中的任何其他“q”或“e”

期望的输出

hu1.cqf51:qe-2/2
hu2.cqf55:qe-2/2
hu2.cqf41:qe-2/2

我尝试过的

sed -r 's/[qu]+/qe/g' sed -e 's//qe/g' sed 's/\S*\(qu\)\S*//g'

如果它与下面的命令匹配,甚至考虑仅尝试删除整个单词,但是它删除了所有带有 q 或 u 的内容。 sed -e 's/[^ ]*qu[^ ]*//g'

感谢您的帮助!!

【问题讨论】:

  • 你想如何处理一行hu3.qux:qe-2/2或一行qu4:cqf41:qe-2/2
  • 为什么s/qu/qe/ 不是你所需要的?

标签: bash shell sed tr


【解决方案1】:

你可以试试这个吗?

sed -e 's/qu/qe/' your_file

【讨论】:

    【解决方案2】:

    我建议

    sed 's/:qu-/:qe-/'
    

    但如果这是一种标准格式,则可能有一种标准方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 2021-09-26
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2013-11-09
      相关资源
      最近更新 更多