2015-05-06 20 views
-1

我得到的查询就好像给定的模式存在于文件中,下一行以相同的模式开始和结束,删除开始并以给定模式结束的行从文件内部删除一个模式条目

输入是这样的:

abcd & abcd 
& abcd & 
abcd & abcd 
& abcd 
abcd abcd 
& abcd & 
abcd & abcd 
abcd & 
abcd & abcd 
& abcd &" 

输出是:

abcd & abcd 
abcd & abcd 
& abcd 
abcd abcd 
& abcd & 
abcd & abcd 
abcd & 
abcd & abcd 

和所用sed命令作为

var=`sed -n "/$1/{n;p}" $2 | grep "^$1" | grep "$1$"` 
sed -i "/^$var$/d" $2 

但命令只删除该文件的第一图案

+0

不应'ABCD abcd'也被删除?还有'&abcd&',既然开始和结束的格式都相同 – fedorqui

+0

只有'&abcd&'必须被移除 – abinasunny

+0

不清楚模式,你能否给出更详细的解释? – fedorqui

回答

0

桑达

sed '/^\& abcd \&$/d' YourFile 

grep的

grep -v '^& abcd &$' YourFile 
+0

我怀疑这是非常复杂的,因为一条线的逻辑与前一个 – fedorqui

+0

的内容有关,我只是拿了样本,但没有代表性。我会适应。 – NeronLeVelu

+0

太混乱了,由于每一行上的递归比较,彼此中止sed中的挑战。 Awk会做到这一点。可能是我有空的时候。 – NeronLeVelu