我想从第二列开始逐行打印文件中最常见的 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
。