如何使用 sed 来替换行?

如何使用 sed 来替换行?

我正在尝试更换线路

"['Used', 170], <c\!--Ma_P_ST1_vCPU_Used-->" 

"['Used', 555], <c\!--Ma_P_ST1_vCPU_Used-->" 

在 html 文件中。

这就是我尝试过的。

sed "s/['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->/['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->/" Code_edit.html

尝试了多重屏蔽。没有帮助。

答案1

其中sed有一些具有特殊含义的字符,需要用引号引起来。
关于这句话:

['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->

您需要引用[,]\:

\['Used', 170\], <\\\!--Ma_P_ST1_vCPU_Used-->

然后,要捕获数字周围的文本,请添加捕获括号:

\(\['Used', \)170\(\], <\\\!--Ma_P_ST1_vCPU_Used-->\)

并将其转换170[0-9]*(数字列表)。完成此操作后,sed 命令变为:

sed "s/\(\['Used', \)[0-9]*\(\], <\\\!--Ma_P_ST1_vCPU_Used-->\)/\1777\2/" <file

\1使用\2每个括号中捕获的字符串。

答案2

这有帮助吗?

sed '/!--Ma_P_ST1_vCPU_Used-->/ s/170/555/' file
"['Used', 555], <c\!--Ma_P_ST1_vCPU_Used-->" 

搜索正确的行,然后将 170 替换为 555。

相关内容