【发布时间】:2021-07-23 02:14:35
【问题描述】:
我有一个存在于文本文件中的字符串,我正在尝试使用正则表达式进行修改。
"configuration_file_for_wks_33-40"
我想修改它,使它看起来像这样
"configuration_file_for_wks_33-40_6ks"
在 vim 中,我可以使用以下正则表达式命令完成此操作
%s/33-\(\d\d\)/33-\1_6ks/
但如果我尝试将该正则表达式命令传递给 sed,例如
sed 's/33-\(\d\d\)/33-\1_6ks/' input_file.json
字符串没有改变,即使我包含了 -e 参数。
我也尝试过使用 ex as 来做到这一点
echo '%s/33-\(\d\d\)/33-\1_6ks/' | ex input_file.json
如果我使用
sed 's/wks_33-\(\d\d\)*/wks_33-\1_6ks/' input_file.json
然后我得到
configuration_file_for_wks_33-_6ks40
为此,我尝试了各种不同的转义模式,但没有任何运气。
谁能帮我理解为什么这些更改不起作用?
【问题讨论】:
-
Sed 不支持
\d。您必须改用[[:digit:]]。