微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-使用Sed用字符串变量替换字符串变量

这个问题已经在这里有了答案:            >            “sed” special characters handling                                    3个
>            Is it possible to escape regex metacharacters reliably with sed                                    2个
>            Escape a string for a sed replace pattern                                    13个
我有一个名为ethernet的文件,其中包含多行.我将这些行之一保存为名为old_line的变量.该变量的内容如下所示:

SUBSYstem=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="2r:11:89:89:9g:ah", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

我创建了另一个名为new_line的变量,它与old_line相似,但是在文本中进行了一些修改.

我想使用sed将old_line的内容替换为new_line的内容.到目前为止,我有以下内容,但不起作用:

sed -i "s/${old_line}/${new_line}/g" ethernet

解决方法:

您需要转义旧行,以便它不包含正则表达式特殊字符,幸运的是,可以使用sed完成.

old_line=$(echo "${old_line}" | sed -e 's/[]$.*[\^]/\\&/g' )
sed -i -e "s/${old_line}/${new_line}/g" ethernet

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐