【问题标题】:Replace String using Sed?使用 Sed 替换字符串?
【发布时间】:2021-03-01 06:18:55
【问题描述】:

我是 Unix 和 Linux 的新手,正在尝试使用 sed 替换文件中的某些字符串。

这是我目前所拥有的:

Param1=CHANGEME 
Param2=Value2 
Param3=CHANGEME 
Param4=Value4

如果我执行此命令:-sed -i 's/CHANGEME/VALUE/g' input.txt,“CHANGEME”将替换为文本“VALUE”,这很好。

如果我想用相应的值编号来更改“值”,那么对于 Param1=Value1 和 Param3=Value3 来说,该怎么办?

我怎样才能做到这一点?谢谢

【问题讨论】:

  • 使用捕获组获取Param末尾的数字,然后在替换文本中使用反向引用。
  • 如果这些行是 1 和 3,请使用 sed -i '1 s/CHANGEME/VALUE1/; 3 s/CHANGEME/VALUE3/' file。此外,sed -i -E 's/^(Param1)=.*/\1VALUE1/; s/^(Param3)=.*/\1VALUE3/' file 也可以。

标签: linux unix sed


【解决方案1】:

使用 GNU sed ...

您的 sn-p 已保存到 hugger:

cat hugger 
Param1=CHANGEME 
Param2=value2 
Param3=CHANGEME 
Param4=value

我认为以下sed 命令可以满足您的需求:

sed -r '/CHANGEME/s/Param([0-9]+)=.*/Param\1=Value\1/' hugger 
Param1=Value1
Param2=value2 
Param3=Value3
Param4=value4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 2017-02-08
    • 2020-03-13
    • 2012-12-21
    • 1970-01-01
    • 2014-01-13
    • 2018-02-24
    • 2010-10-17
    相关资源
    最近更新 更多