【问题标题】:sed - search and replace between 2 markssed - 在 2 个标记之间搜索和替换
【发布时间】:2015-01-09 09:15:37
【问题描述】:

我想搜索一个字符串并修改它

我构建了一个这样的字符串:

|Bor.Team1-FCTeam2|

还有:

|FCTeam2-Bor.Team1|

或作为模式

|Text–Text|

我想更改 Team1 的名称,它可以有不同的名称,例如:

Bor.Team1
B.Team1
BTeam091
...

我想要每次都同名 -> B.Team1

Team 每次都用不同的措辞!

我和sed 's/\bBor.Team1\b/B.Team1/g'一起玩arround,但我必须找到并了解每一个不同的用语。

【问题讨论】:

  • 您的示例中的BTeam091Team1 有什么关系?您能否提供一个条目示例和预期结果(特别是要查找的 |Text-Text| 模式?

标签: string bash shell command-line sed


【解决方案1】:

那应该做你需要的:

echo $string | sed -e 's/[a-zA-Z\.]\+Team\([0-9]\+\)/B.Team\1/g'

它搜索字母字符和一个点 (.),后跟单词 Team,后跟一个数字 ([0-9])。这一切都将被你想要的任何东西所取代。在示例中,它是 B.Team,后跟找到的号码 (\1)。

【讨论】:

    【解决方案2】:

    查找并替换任何东西 Team1 d 将整个替换为 B.Team1 并在每个 | | 包围的内容中保持对应部分相同

    sed -e 's/\|[^-|]*Team1[^-|]*-\([^|]*\)|/|B.Team1-\1|/g
            s/\|\([^-|]\)-[^|]*Team1[^|]*|/|\1-B.Team1|/g' YourFile
    

    例如:

    • |bla.team1.corp-其他| -> |B.team1-其他|
    • |ot.her-foolteam1| -> |ot.her-B.team1|

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2014-09-13
      • 2015-09-04
      • 2010-11-05
      • 1970-01-01
      • 2018-07-04
      • 2015-08-20
      • 1970-01-01
      相关资源
      最近更新 更多