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
选项,则不会输出该行,因为该行仅在文件中出现一次