如果是comumn,如何删除file1中的行

时间:2018-01-26 23:33:26

标签: linux awk

我有一个包含4列的文件,如果第3列在文件2中,我需要从file1中删除

示例:

File1中:

https://docs.google.com/document/d/FILE_ID/export?format=doc

文件2:

14769,marty.------@googlemail.com,c076a7b6a52857ddf2f2e60d71dda6bf,49
14770,maryfi-------@googlemail.com,23fc2887a3a8248ddea570b5700b1708,49
14771,n.s------@googlemail.com,e504a6617f375ce04f4e51f1ec66dd93,49
14772,paula------@googlemail.com,f918f5b8df1d6285892d003c2fb9e3cf,49
14773,pkec.------@googlemail.com,4ca2c5d670f324c31a20854873bf63ac,49
14774,squi-------@googlemail.com,d26a0296a361b79afd98ede1af918f6d,49

所以结果会像这样

d26a0296a361b79afd98ede1af918f6d
4ca2c5d670f324c31a20854873bf63ac

我试过这个

14769,marty.------@googlemail.com,c076a7b6a52857ddf2f2e60d71dda6bf,49
14770,maryfi-------@googlemail.com,23fc2887a3a8248ddea570b5700b1708,49
14771,n.s------@googlemail.com,e504a6617f375ce04f4e51f1ec66dd93,49
14772,paula------@googlemail.com,f918f5b8df1d6285892d003c2fb9e3cf,49

但没有工作

1 个答案:

答案 0 :(得分:0)

我无法添加评论,但代表不够;但是我已经用gawk尝试了你的代码,它确实删除了你想要的两行。你没有得到制表符分隔输出的原因是OFS只有在重建$ 0后才会生效,所以你可以通过简单的赋值来强制执行此操作,例如$ 1 = $ 1和你的OFS =&#39; \ t&#39;:< / p>

 {a[$1]=$3 ;next} !($3 in a) {$1=$1; print}' OFS='\t' file2 file1

结果:

14769 marty.------@googlemail.com c076a7b6a52857ddf2f2e60d71dda6bf 49 14770 maryfi-------@googlemail.com 23fc2887a3a8248ddea570b5700b1708 49 14771 n.s------@googlemail.com e504a6617f375ce04f4e51f1ec66dd93 49 14772 paula------@googlemail.com f918f5b8df1d6285892d003c2fb9e3cf 49