2016-07-26 54 views
-2

EG从文本文件在linux删除文件整个线用2柱,用1柱

文件

ABC 123

DEF 456

GHI 789

文件B

高清

Resultfile

ABC 123

GHI 789

我使用sed,grep的尝试过,但它只是将无法正常工作。我只是说学习Linux和coudn't找到任何相似的东西。

谢谢

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

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

+3

'grep -wvf fileB fileA'使用'man grep' – anubhava

+0

工作感谢。另一个问题:如何与#infront蜇伤? E.G abs 123和#abc 123,我想只删除找到“#abc”的那一行? – crossing

回答

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

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

在fileb行的结尾处,您有一个关键数组,其中作为filb和value中的行的键为null。

然后开始处理filea中的行。

{打印}将要为FILEA但条件的所有行(在)!($ 1) 这意味着打印仅当filea中的第一场是现有作为关联数组

一个键在filea中的线来执行
+1

这是一个纯代码的答案,请将其展开以帮助其他用户学习,而不仅仅是转储代码。 – Pureferret

+0

谢谢,它工作 – crossing

0

既然我无法回复乌尔评论我在这里张贴,以删除以“#”开头的行尝试

的sed“/ ^#/ d” FILEA FILEB