我有一个大文件,其中包含第一列中的ID号,然后是后续列中的其他唯一信息。每个ID号在文件中发生多次:
000112 3489 A-8 40984
000112 4743 A-7 94587
000112 5894 A-1 45795
000177 8347 A-2 54575
000177 5843 B-5 94342
000177 5684 A-4 76544
000177 6586 C-2 65834
000226 5679 C-2 85795
000226 5456 C-1 45876
000226 9899 A-2 56834我希望输出一个文件,其中只包含每个ID号头两次出现的行:
000112 3489 A-8 40984
000112 4743 A-7 94587
000177 8347 A-2 54575
000177 5843 B-5 94342
000226 5679 C-2 85795
000226 5456 C-1 45876请注意,此数据仅代表输入文件的一小部分,因此需要输入特定字符串(ID号)的命令不是我要找的。谢谢!
发布于 2017-03-31 19:03:43
awk 'a[$1]++ < 2' input-file应该能起作用。只需读取该文件并增加第一列中的值所索引的数组。如果该值小于2,则打印该行。当您第三次看到相同的id时,数组中的索引将为2,并且该行的输出将被抑制。
发布于 2017-03-31 18:38:33
这并不好看,但它产生了所需的输出:
步骤1:
awk '!seen[$1]++' input.file > output1 第2步:
grep -v -F -f output1 input.file | awk '!seen[$1]++' > output2第3步:
cat output1 output2 | sort -k 1 > desired.outputhttps://stackoverflow.com/questions/43126938
复制相似问题