本文共 1279 字,大约阅读时间需要 4 分钟。
awk(又名行处理器)是一种强大的文本处理工具,广泛应用于数据处理、批处理脚本及数据分析等场景。它的独特之处在于能够高效处理庞大文件,不易导致内存溢出或性能问题,适合日常工作场景。
awk的命令格式大致如下:
awk [选项]ık [start]{命令} [end]{命令}
需要解析以下关键部分:
-F
指定分隔符| -v
定义变量{}
包裹一行或多行命令awk逐行处理文本,每行执行命令输出结果。每一行会循环执行BEGIN
、{ command }
、END
块。
-F
指定分隔符:默认空格或制表符,可指定多个分隔符-v
定义变量:用于处理复杂计算或变量引用awk '{print $0}' /etc/passwd
输出:打印每一行完整内容
awk '{print "a"}' /etc/passwd
输出:每行输出一个a
分割处理
awk -F":" '{print $1 $3}' /etc/passwd
说明:以:
分隔,输出第一个字段和第三个字段,相连不添加空格
awk -F:" " '{print $1,$3}' /etc/passwd
说明:自定义添加空格,确保输出格式符合要求
lak -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'
说明:统计/home
目录下普通文件总大小(KB单位)
netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n",i," ",sum[i]}'
说明:统计netstat -anp
输出中LISTEN
和CONNECTED
状态的连接数
awk '{global_var = 10; print global_var}'
说明:定义全局变量
awk '{if ($1 ~/mail/) print $1}' /etc/passwd
说明:判断字段是否包含mail
,打印符合条件的行
awk '{print NR}' /etc/passwd
说明:打印每行的记录号(从1开始递增)
awk '{print $3+$4}' /etc/passwd
说明:对两个字段进行加法运算并输出结果
以上只是awk的一小部分应用场景和实例,通过灵活运用awk可以应对更为复杂的处理需求。
转载地址:http://yfwfk.baihongyu.com/