Bash 获取uniq行的前N次出现次数,而不仅仅是一次

Bash 获取uniq行的前N次出现次数,而不仅仅是一次,bash,uniq,Bash,Uniq,我有一个包含行的文件,其中有两个字段由空格分隔: fieldA fieldX fieldB fieldX fieldC fieldX fieldD fieldX fieldE fieldX fieldA fieldY fieldB fieldY fieldC fieldY 我需要在第二列中获取类型的前N行。我所做的是 sort-k2 | uniq-f1--all repeated=prepend | grep“^$”-A3 它应该可以工作,但是uniq-f1给了我一些不同于uniq-f1的东西

我有一个包含行的文件,其中有两个字段由空格分隔:

fieldA fieldX
fieldB fieldX
fieldC fieldX
fieldD fieldX
fieldE fieldX
fieldA fieldY
fieldB fieldY
fieldC fieldY
我需要在第二列中获取类型的前N行。我所做的是
sort-k2 | uniq-f1--all repeated=prepend | grep“^$”-A3
它应该可以工作,但是
uniq-f1
给了我一些不同于
uniq-f1的东西——所有重复=前置
。我是否正确理解prepend应该只在unique chunk之前添加emtpy行

还是有更好的方法


谢谢这里有一个使用
awk
的想法:

awk -v maxlines=<N> ' ++count[$2] <= maxlines { print } '

awk-v maxlines='++count[$2]不,你对prepend的理解不太正确

prepend
告诉
uniq
在重复的块之前打印一个空白文件。请记住,通过添加
--all repeated
选项,您告诉
uniq
仅打印重复的行,即重复出现多次的行。它不会像uniq-f1那样打印出一次出现的行

例如,如果将另一行添加到文件中,例如,
fieldA fieldZ
,则如果使用了
--all repeated
选项,则不会输出该行,因为该行仅在文件中出现一次