regex - 使用 Sed 将字符串变量替换为字符串变量

标签 regex linux bash sed

<分区>

我有一个名为 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

最佳答案

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

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

关于regex - 使用 Sed 将字符串变量替换为字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560515/

相关文章:

regex - 在长字符串中插入换行符

c# - 字符串中字符的限制

linux - npm “error network getaddrinfo ENOTFOUND registry.npmjs.org”

bash - 将在 awk 中找到的文件名传递给 vim 命令

java - 使用 Jsoup 删除所有 HTML 但保留行

regex - 使用 vbscript 表示两个数字的正则表达式 : not valid :"$123456789012" and valid: "12345678912"

mysqldump 区分大小写的问题? Win->linux

linux - `wait()` 和 `exit()` 这两种用法哪个更好?

ios - 为什么在从命令行创建 IPA 时我的构建阶段脚本不被执行?

regex - 我可以用 sed 获取匹配后下一行的长度吗?