【问题标题】:sed replace dots on each lines with paternsed 用图案替换每行上的点
【发布时间】:2017-07-11 08:37:59
【问题描述】:

我需要帮助来替换给定特定模式上的点, 例如:

[my title="my.name part 02"][A]
[A][A2 title="Backup"][my data="http://domain/my.name.jpg"][/A2][/A][/A2]
[A][A2 title="Backup"][my data="http://domain/my.name2.jpg"][/A2][/A]

[my title="my.name part 03"][A]
[A][A2 title="Backup"][my data="http://domain/my.name3.jpg"][/A2][/A][/A2]
[A][A2 title="Backup"][my data="http://domain/my.name4.jpg"][/A2][/A]

[my title="my.name part 04"][A]
[A][A2 title="Backup"][my data="http://domain/my.name5.jpg"][/A2][/A][/A2]
[A][A2 title="Backup"][my data="http://domain/my.name6.jpg"][/A2][/A]

所以我试图从每行的 my.name 中删除点,我尝试使用基本的 sed 命令进行替换,但所有 http 链接也被替换了。

sed -i -e 's/my.name/my name/g' file

如果我使用上面的 sed 命令,它会破坏我的图片链接。

如果有人能帮我解决这个问题,我真的很感激。

非常感谢。

*已编辑

【问题讨论】:

  • sed 's/my\.name/my name/' file 将您需要的所有开关添加到sed

标签: bash sed


【解决方案1】:
sed -ri 's:(^\[my title.*)[.](.*$):\1 \2:' filename

将以“[my title”开头的行分成由“.”分隔的两部分。然后在翻译后的 sed 表达式中将它们称为 \1 和 \2。

【讨论】:

  • 几乎可以工作了,但需要稍微改变一下,结果是 [my title="myname not [my title="my name
  • 应该是“我的名字”而不是“我的名字”。 \1\2 将连接“。”之后的字符串。之前没有空格的字符串。我测试时工作正常。
  • 抱歉,我误读了你的问题。我已经修改了解决方案,在 \1 和 \2 之间添加一个空格
  • 感谢 Raman Sailopa 现在正在工作,非常感谢您的帮助!
猜你喜欢
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
相关资源
最近更新 更多