awk比较文件,在不匹配的情况下插入字符
我有两个以制表符分隔的文件 pos.txtawk比较文件,在不匹配的情况下插入字符,awk,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 1
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
但这只打印在文件1中找到的第2列值。我不希望这些值丢失。这将满足您的需要:
$ awk 'FNR==NR{a[$2]++;next}a[$2]{$4="\tx";print;next}1' pos.txt file1.txt
嘿这在逻辑方面有很大帮助,但代码并不能完全满足我的需要。我需要它只为pos.txt中的列值打印X我不希望它打印文件1中的所有内容。txt您可以添加所需的输出以补充您的问题描述吗?第一个文件中没有第四列,所以您尝试使用第四列中的X输出的确切内容是什么?为什么不举一个例子,说明pos.txt中的一些字段与相关的期望输出不匹配?这将有助于澄清您的需求相当多-现在它是完全模糊的。即使将第一个文件命名为pos.txt,将第二个文件命名为file1,而不是简单地命名为file1和file2,也会让人感到困惑。把你的问题说得清楚简单。