假设桌面上有一个data.txt文本,内容如下:
{id='xxx' info='xxx' kk='xxx' target='111111' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='777' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='yyyy' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='5555' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='777' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='555566' dd='xxx'}要求:找出“data.txt”文件中target字段出现次数最多的值。
Linux下统计字符串
在linux终端通过常用工具进行解决,方法如下:
其中组合用到了一些命令行和工具,有cat、awk、cut、sed、sort、uniq、tail——
cat
cat data.txt 获取并显示data.txt文本内容
awk
cat data.txt | awk '{print $4}' 依次对每一行进行处理,然后输出地4个字段
cut
cat data.txt | awk '{print $4}' | cut -c 8- 从截取的字符串第8位开始到最后
sed
cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g",去掉传入字符串中包含的 ' 字符:
uniq,sort
cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | uniq -c | sort 去重并统计每种字符串出现的次数:
tail
cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | uniq -c | sort | tail -n 1 显示最后一行数据
我们至此已知出现次数最多的target字段值为777,出现次数为2。若有多个相同次数的字段值出现,可以通过修改tail -n后面接的数值来查看,改为10即显示结尾10行