Linux 文件类信息统计指令(awk、sort、wc -l)

Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是常用的; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧;

wc -l

cat file |grep -o word |wc -l 统计file文件中word这个关键字出现的个数 cat file |grep word |wc -l 统计file文件中word这个关键字出现的行数

AWK

awk 是一种脚本语言,用于处理或分析文本文件。或者我们可以说,awk 命令主要用于根据列或字段或一组列对数据进行分组,它主要用于以有用的方式报告数据,它还使用 Begin 和 End 块来处理数据。

备注: 在 awk 命令中 {print;} 用于打印所有字段及其值。

打印特定的字段

在 awk 命令中,我们使用 $ (美元) 符号后跟字段号来打印字段值。

我们只打印字段 2 和字段 3,使用选项 -F,指定逗号为字段分隔符

复制代码
$ awk -F "," '{print $2, $3;}' awk_file
Marks Max Marks
200 1000
500 1000
1000
800 1000
600 1000
400 1000

打印与模式匹配的行

打印包含单词 Hari 或 Ram 的行,示例如下

复制代码
$ awk '/Hari|Ram/' awk_file
Ram,200,1000
Hari,600,1000
Ram,400,1000

特定列中数据项的和

在 awk 命令中,也可以根据搜索执行一些算术操作,语法如下所示

复制代码
$ awk -F, '$1=="Item1″{x+=$2;}END{print x}' awk_file

求一列中所有数字的总数

在 awk 命令中,我们还可以计算某一列中所有数字的和。在下面的例子中,我们正在计算第 2 列和第 3 列的所有数字的和。

复制代码
$ awk -F"," '{x+=$2}END{print x}' awk_file
3500
$ awk -F"," '{x+=$3}END{print x}' awk_file
5000

分组求和

实现类似 SQL 中的按某个字段分组求和,示例如下:

复制代码
$ awk -F, '{a[$1]+=$2;}END{for(i in a)print i", "a[i];}' awk_file
Abharam, 800
Hari, 600
Name, 0
Ghyansham, 1000
Ram, 600
Shyam, 500

sort 排序指令

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序

比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

复制代码
sort [选项] 参数
cat file | sort 选项
 
-n 按照数字进行排序
-r 反向排序
-u 等同于uniq,表示相同的数据仅显示一行
-t 指定字段分隔符,默认使用 [Tab]键分隔
-k 指定排序字段
-o <输出文件>:将排序后的结果转存至指定文件
-f 忽略大小写,会将小写字母都转换为大写字母来进行比较
-b 忽略每行前面的空格
 
#####按数字排序#####
sort -n num.txt #按照数字进行排序
 
#####UID排序#####
sort -t ':' -k 3 -n /etc/passwd 
#也可以cut 方式 cat /etc/passwd | cut -d ':' -f 1,3
 
#指定字段分隔符 指定排序第三字段(UID) 按照数字进行排序
#####IP主机位排序#####
sort -t '.' -k 4 -n /opt/ip 
#指定字段分隔符 指定排序第三字段(UID) 按照数字进行排序
 
#####统计文件夹大小#####
du -a | sort -nr -o du.txt
#输出文件大小 数字倒序排序 写入du.txt文件

uniq命令 操作重复行

用于报告或者忽略文件中连续的重复行,常与 sort 命令结合使用

复制代码
unig [选项] 参数
cat file | uniq 选项
 
cat file | uniq -c #统计出现次数

cat /opt/ip | sort -n -t '.' -k4 | uniq -c 
#cat输出文件内容 sort根据.分隔的第四段数字排序 再交给uniq -c统计出现的次数
      2 192.168.80.10
      1 192.168.80.75
      1 192.168.80.100
      1 192.168.80.120
      2 192.168.80.200
      3 192.168.80.245
 
cat /opt/ip | sort -n -t '.' -k4 | uniq -c | awk '{print $1}' 
    2
    1
    1  #awk筛选出次数
    1
    2
    3

3. 文本处理 --- Linux Tools Quick Tutorial

我不是网管 - 超有用的 Linux / Unix awk 命令示例 - 知乎

Linux shell编程常用命令(sort排序 uniq重复行 set +-x调试脚本 tr压缩替换字符 cut切片 split拆分 paste合并文件列 eval扫描变量)_shell的sort命令_低温热源的博客-CSDN博客

相关推荐
Rabbit_QL1 小时前
【ln -s】Linux 软链接在大模型部署中的应用
linux·运维·服务器
LT10157974441 小时前
2026年超自动化平台选型指南:全流程智能协同适配
运维·人工智能·自动化
坤昱1 小时前
cfs调度类深入解刨——核心结构细节分析
linux·cfs调度·eevdf调度·linux调度·linux技术
希望永不加班1 小时前
var局部变量类型推断的利弊
java·服务器·前端·javascript·html
枳实-叶1 小时前
【Linux驱动开发】第12天:Linux设备树核心:树形结构+节点+属性 完整全解
linux·运维·驱动开发
Yeats_Liao1 小时前
物联网接入层技术剖析(三):epoll在JVM中的映射
java·linux·jvm·人工智能·物联网
悠悠121382 小时前
Jenkins + Ansible 集成实战:把配置管理焊进流水线里
运维·ansible·jenkins
日取其半万世不竭2 小时前
用 n8n 搭建自己的自动化工作流平台
运维·自动化
小贾要学习2 小时前
【Linux】基于自定义TCP协议的日期计算器
linux·网络·c++·网络协议·tcp/ip
樱桃花下的小猫2 小时前
游戏云服务器定时任务设置教程
服务器·游戏·新手友好·云鸢互联·零门槛一键开服