Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5708516
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: LINUX

2007-03-21 19:40:57

今天遇到了一个问题,就是删除匹配到一个变量的行。

例如:
$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'
使用了两条命令来删除的,首先将原来的替换为空,再删除空行

不知道哪一位网友知道更好的方法?
阅读(9339) | 评论(4) | 转发(1) |
给主人留下些什么吧!~~

CUDev2008-01-17 11:41:29

这种方法也不是很妥当,万一文件中还有一行恰好是你替换后的格式,那岂不是罔杀好人了?

CUDev2008-01-17 11:41:29

这种方法也不是很妥当,万一文件中还有一行恰好是你替换后的格式,那岂不是罔杀好人了?

chinaunix网友2008-01-16 23:12:19

先把变量替换了可能会好点,不会错杀:) a="192.168.0.1/24" a=`echo $a|sed 's@/@\\\/@'` sed "/$a/d" test.txt

chinaunix网友2008-01-16 23:12:19

先把变量替换了可能会好点,不会错杀:) a="192.168.0.1/24" a=`echo $a|sed 's@/@\\\/@'` sed "/$a/d" test.txt