首页 > 解决方案 > 在我的情况下,用于删除与模式匹配的行的 sed 命令不起作用

问题描述

这些是我的文件 /etc/sysconfig/network-scripts/route-eth0 的内容:

192.168.1.12/32 via 172.16.1.60
192.168.1.0/24 via 172.16.60.1

我正在使用以下 sed 命令删除一行:

sed  -i  '#192.168.1.0/24 via 172.16.60.1#d'   /etc/sysconfig/network-scripts/route-eth0

但是匹配的行(在我们的例子中是第 2 行)没有被删除。有什么见解吗?

注意:我在 sed 命令中使用 #(hash symbol) 作为分隔符,因为 /(forward slash symbol) 是我的模式的一部分。

标签: awksed

解决方案


/如果在表达式中转义字符是一个问题,您可以使用awk

awk -v search='192.168.1.0/24 via 172.16.60.1' '$0 != search' file > file.tmp \
&& mv file.tmp file

或就地gawk

gawk -i inplace -v search='192.168.1.0/24 via 172.16.60.1' '$0 != search' file

推荐阅读