今天遇到了一个问题,就是删除匹配到一个变量的行。
例如:
$a="192.168.0.1/24"
$cat test.txt
192.168.0.1
192.168.0.1/24
现在是要删除包含192.168.0.1/24的行.
sed “/$a/d” test.txt
不行,因为变量中包含/,会产生歧义。
以前我写过文章,可以使用@来转移特殊字符
找了很长时间,没有找到解决方法,只好使用一种BT的方法了。
$sed "s@$a@@" test.txt | sed '/^$/d'
使用了两条命令来删除的,首先将原来的替换为空,再删除空行。