awk 在第二列中打印最常见的字符串

awk 在第二列中打印最常见的字符串

我想从第二列开始逐行打印文件中最常见的 10 个字符串

输入示例:

example123:Example
Example321:Example
Common:String
Common:String
..

预期产出

example
string
...

答案1

大概是拼写错误的情况下的变化。如果是这样,则以下内容有效。

awk -F: '{print $2}' input.txt | sort | uniq -c | sort -rn | awk '{print $2}'

解释

为了理解它,从第一个命令开始,一直到管道,然后单独运行它。然后依次添加下一个管道。

  • awk -F: '{print $2}' input.txt:作为分隔符,打印第二个字段。
  • | sort:对文件进行排序,以便您可以运行
  • | uniq -c,它将相邻的重复条目压缩为一个,同时列出重复的计数-c
  • | sort -rn:按计数对输出进行降序排序。
  • | awk '{print $2}':去掉计数,只打印匹配的字符串。

我通常会使用cut而不是awk,但你的问题要求awk,所以......或者,第一个命令更简单cut -d: -f2 input.txt

相关内容