1
4
6
另一个文件b包括若干条目,格式为:
1 record a
1 record b
1 record c
2 record d
2 record e
3 record f
4 record g
4 record h
5 record i
5 record j
6 record k
现在希望删除b中所有序号在a中出现的这些行,在上面例子中,只剩下序号为2,3,5的行(共计剩5行)
用python之类还是非常容易实现的,好奇想试试用一行awk来解决,请大家赐教~谢谢
7 个解决方案
#1
for N in `cat a`
do
sed -i "/^$N/d" b
done
do
sed -i "/^$N/d" b
done
#2
it doesn't work.... no output
#3
另外,我想知道在b中哪些行(行号)被删除了,有可能么
b加了行号后似乎就没那么方便用sed处理了,因为匹配的换成了第二列 当然把行号加到行尾还是可以继续用以上方法的
b加了行号后似乎就没那么方便用sed处理了,因为匹配的换成了第二列 当然把行号加到行尾还是可以继续用以上方法的
#4
根据一个以前的回复,自己搞了一下
awk 'NR==FNR{b[1] = $0}NR>FNR{if($1 in b); else print $0}' a b
#5
awk -F " " '/^[2,3,5]/{print $0}' b
#6
awk -F " " '/^[2,3,5]/{print $0}' b
#7
awk -F " " '/^[2,3,5]/{print $0}' b
#1
for N in `cat a`
do
sed -i "/^$N/d" b
done
do
sed -i "/^$N/d" b
done
#2
it doesn't work.... no output
#3
另外,我想知道在b中哪些行(行号)被删除了,有可能么
b加了行号后似乎就没那么方便用sed处理了,因为匹配的换成了第二列 当然把行号加到行尾还是可以继续用以上方法的
b加了行号后似乎就没那么方便用sed处理了,因为匹配的换成了第二列 当然把行号加到行尾还是可以继续用以上方法的
#4
根据一个以前的回复,自己搞了一下
awk 'NR==FNR{b[1] = $0}NR>FNR{if($1 in b); else print $0}' a b
#5
awk -F " " '/^[2,3,5]/{print $0}' b
#6
awk -F " " '/^[2,3,5]/{print $0}' b
#7
awk -F " " '/^[2,3,5]/{print $0}' b