【发布时间】: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也可以。