sed + 用键替换方括号中的字符串

用户436442

我想用 sed 用目标替换 [....] 中的内容 key=new_string

more /tmp/file
my.uri=http://[linux123]:8080

我们试试这个

key=new_string

sed  s"/\[*\]/$key/g" /tmp/file

但文件没有改变

more file
my.uri=http://[linux123]:8080

我的 sed 有什么问题?

预期结果应该是(没有方括号)

more file
my.uri=http://new_string:8080
比萨斯普

首先,您必须确保您的key变量不包含任何对您的sed命令具有特殊意义的字符,例如/这是 sed 替换的默认分隔字符。在这种情况下,您可以使用不同的字符,例如像这样"s@pattern@replacement@g" file

然后你需要从一个开始匹配到相应的结束括号。那将是\[.*\]但 sed 贪婪:如果您的行包含[text1] text2 [text3], sed 将匹配所有这些。所以你需要定义,而不是.*,任何不是右括号的字符,零次或多次:[^]]*

注意在上面,我们不需要\]对中间的括号进行转义(),因为sed在插入符号(^之后等待至少一个字符排除,所以它不会误认为这是列表的结束括号排除的字符,但作为文字括号。

现在,如果您想就地进行更改,则可以使用本文中-i所述的方法但是先不测试-i,检查输出的一部分,看看它是否看起来不错。

因此,这sed预计适用于您的情况:

sed -i "s/\[[^]]*\]/$key/g" file

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用sed替换方括号之间的字符串

来自分类Dev

如果有方括号,sed replace 将无法替换字符串

来自分类Dev

用 sed 替换包含括号的字符串,将包含日期的子字符串替换为括号

来自分类Dev

用sed脚本替换字符串

来自分类Dev

sed用引号替换字符串

来自分类Dev

用sed替换字符串

来自分类Dev

用sed替换多行字符串

来自分类Dev

sed用变量替换字符串?

来自分类Dev

用sed替换子字符串

来自分类Dev

用sed替换字符串

来自分类Dev

sed用引号替换字符串

来自分类Dev

sed用空格替换字符串

来自分类Dev

用SED替换文件中的字符串

来自分类Dev

sed替换括号内的文本(oracle连接字符串)

来自分类Dev

sed->从字符串替换固定文本和括号

来自分类Dev

如何使用sed替换括号内的字符串

来自分类Dev

sed中的字符串替换

来自分类Dev

sed脚本用换行符替换字符串中的字符串“ \ n”

来自分类Dev

如何使用sed用方括号替换值?

来自分类Dev

sed 用数字特殊字符替换字符串

来自分类Dev

用 / 字符替换字符串的 sed 命令

来自分类Dev

sed 用空格和特殊字符替换字符串

来自分类Dev

用Sed替换BASH中的字符串(当它有特殊字符时)

来自分类Dev

bash-用sed替换字符串

来自分类Dev

sed用管道和星号替换字符串

来自分类Dev

sed-用分组替换字符串

来自分类Dev

sed用boolean替换带引号的字符串吗?

来自分类Dev

用sed替换包含&&的字符串

来自分类Dev

sed用某些字符串替换多个模式