awk比较文件,在不匹配的情况下插入字符

时间:2014-09-19 07:30:35

标签: awk

我有两个制表符分隔的文件。

pos.txt

A   100027454       
A   100028517       
A   100028954       
A   100028986       
A   100033307       
A   100033331       
A   100033338       
A   100033382       
A   100033410       
A   100033424       

FILE1.TXT

A   102470  T       *
A   102471  G       *
A   102472  C       *
A   102473  T       *
A   102474  G       *
A   102475  G       *
A   102476  T       *
A   102477  C       *
A   102478  C       *
A   102479  T       *

我想根据第一个文件中的第二列比较这两个文件。如果第二列值存在于两个文件的一行中,我希望它输出第二个文件中的整行。如果该值存在于第一个文件中而不存在于第二个文件中,我希望它在第四列中输出X,并按原样输出前三列。

这是我能够得到的:

awk 'FNR==NR{a[$2]++;next}a[$2]' pos.txt file1.txt

但这只会打印它在file1中找到的第2列值。我不希望丢失这些值。

1 个答案:

答案 0 :(得分:0)

这将满足您的需求:

$ awk 'FNR==NR{a[$2]++;next}a[$2]{$4="\tx";print;next}1' pos.txt file1.txt