这个问题已经在这里有了答案: > “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] 举报,一经查实,本站将立刻删除。