使用Linux命令统计文件指定列中字符串出现次数

本文演示如何使用Linux shell命令,包括sort、uniq和awk,来统计单列或多列文件中编程语言出现的次数。首先,通过生成包含多种编程语言的随机列表文件,然后统计各语言出现的频率并按频率排序。接着,展示了找出频率最高和最低的三种语言的方法,以及在多列文件中如何应用这些技巧。最后,提到了用wc命令查看文件的行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用脚本生成测试文件,内容为几种编程语言的随机列表

此处使用了$RANDOM来生成随机数
生成一个样例文件,如test_201709,文件内容只有一列

#!/bin/bash

generate_file="test_$(date +%Y%m)"
names=(Java Shell C C++ Python Php Go)
names_length=${#names[@]}
rm -f ${generate_file}
for i in {1..200}
do
  random_num=$RANDOM
  index=$((random_num%names_length))
  echo "${names[${index}]}" >> ${generate_file}
done

统计各个语言出现的次数(以下测试中的次数重新生成文件后会不一样)

此处文件名可直接使用上述文件名规则test_$(date +%Y%m)

sort test_$(date +%Y%m) | uniq -c

执行结果如下,第一列为次数:

26 C
27 C++
32 Go
27 Java
33 Php
29 Python
26 Shell

按出现次数由高到底排序

sort test_$(date +%Y%m) | uniq -c | sort -k1,1nr

执行结果如下:

33 Php
32 Go
29 Python
27 C++
27 Java
26 C
26 Shell

找出出现次数最高或者最低的三种语言

1.次数最高三种语言

sort test_$(date +%Y%m) | uniq -c | sort -k1,1nr | head -3

执行结果如下:

33 Php
32 Go
29 Python

2.次数最低三种语言
1)次数最低语言由高到低排序展示

sort test_$(date +%Y%m) | uniq -c | sort -k1,1nr | tail -3

执行结果如下:

27 Java
26 C
26 Shel

2)次数最低语言由低到高排序展示

sort test_$(date +%Y%m) | uniq -c | sort -k1,1n | head -3

执行结果如下:

26 C
26 Shel
27 Java

以上操作针对是单列的文件,若对多列文件可用awk命令拆分出列,再进行以上操作即可

awk的-F选项可以指定分割符,默认分割符为空字符,获取某一列命令如下
n需要替换为具体列数

awk '{print $n}' file_name
awk -F ',' '{print $n}' file_name

若需要查找第二列出现次数前三且列分割符为’,’,命令如下:

awk -F ',' '{print $2}' file_name | sort | uniq -c | sort -k1,1nr | head -3

查看文件行数

file_name 可为多个文件,为多个时会把总行数显示,并且此时可按照行数排序来查找文件

wc -l file_name

例如在我当前测试目录下执行wl -l ./* 显示如下:

12 ./generate.sh
200 ./test_201709
212 total
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值