首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅根据列字符串的出现情况输出前n行

如何仅根据列字符串的出现情况输出前n行
EN

Stack Overflow用户
提问于 2017-03-30 19:38:39
回答 2查看 229关注 0票数 0

我有一个大文件,其中包含第一列中的ID号,然后是后续列中的其他唯一信息。每个ID号在文件中发生多次:

代码语言:javascript
复制
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号头两次出现的行:

代码语言:javascript
复制
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号)的命令不是我要找的。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 19:03:43

代码语言:javascript
复制
awk 'a[$1]++ < 2' input-file

应该能起作用。只需读取该文件并增加第一列中的值所索引的数组。如果该值小于2,则打印该行。当您第三次看到相同的id时,数组中的索引将为2,并且该行的输出将被抑制。

票数 1
EN

Stack Overflow用户

发布于 2017-03-31 18:38:33

这并不好看,但它产生了所需的输出:

步骤1:

代码语言:javascript
复制
awk '!seen[$1]++' input.file > output1 

第2步:

代码语言:javascript
复制
grep -v -F -f output1 input.file | awk '!seen[$1]++' > output2

第3步:

代码语言:javascript
复制
cat output1 output2 | sort -k 1 > desired.output
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43126938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档