从linux中具有1列的文本文件中的2列中删除整行

时间:2016-07-26 11:13:58

标签: linux bash shell sed grep

E.G

档案A

abc 123

def 456

ghi 789

文件B

def

Resultfile

abc 123

ghi 789

我用sed,grep尝试了它,但它只是赢了工作。我刚刚说过学习linux和coudn没有找到类似的东西。

谢谢

// * -----------

grep -wvf工作但现在我看到我有一个问题,刺痛在哪里"#"在前面。那些也将被删除。通过修改为grep -w x vf,该命令根本不起作用。我需要grep以外的其他命令吗?

2 个答案:

答案 0 :(得分:0)

由于我无法回复Ur评论,我在此处发帖,为了删除以“#”开头的行,请尝试

sed'/ ^#/ d'filea fileb

答案 1 :(得分:0)

awk 'FNR==NR{a[$0];next}(!($1 in a)){print}' fileb filea

{a [$ 0]; next} - 此块执行直到FNR == NR(这意味着对于fileb的所有行)。 "下一个"确保在此块之后没有代码被执行。

在fileb行的末尾,你有一个关联数组,其中key作为filb中的行,value为null。

然后开始处理filea中的行。

将对filea中的所有行执行

{print}但条件为(!($ 1 in a)) 这意味着只有当filea的第一个字段作为关联数组a中的键存在时才打印filea中的行