
linux awk命令详解
发布日期:2021-05-12 13:44:54
浏览次数:27
分类:精选文章
本文共 1967 字,大约阅读时间需要 6 分钟。
AWK命令实用指南
一、AWK的基本概念
AWK是一种强大的文本处理工具,广泛应用于数据处理和分析。相较于传统的屏幕处理工具,AWK在处理大文件时性能更优,且不会导致内存溢出或处理速度变慢。它的主要特点是“行处理器”,即依次处理每一行并输出结果。
二、AWK命令的结构
AWK命令的基本结构为:
awk [选项] '{命令} file'
其中,[选项]
包括:
-F
:指定分隔符,默认为空格。-f
:执行外部脚本。-v
:定义变量,格式为var=value
。
命令部分包含:
BEGIN {代码块} {处理每一行}END {代码块}
BEGIN
代码块用于初始化,设置全局变量或分隔符;END
代码块用于处理每行处理后的最终计算或输出。
三、字段处理
AWK支持多种字段操作符:
$0
:表示整行内容。$n
:表示第n个字段。NF
:表示当前行的字段数量。NR
:表示当前行的记录号,多文件时递增。FNR
:与NR
类似,但每个文件的记录号从1开始。\t
:制表符。\n
:换行符。FS
:定义分隔符,默认为换行符。RS
:定义记录分隔符,默认为换行符。
四、条件判断
AWK支持if
语句,条件比较应用括号包裹。if
语句必须放在{}
中,格式如下:
if(condition) {命令}
常用比较运算符包括:
==
:精确等于。!=
:精确不等于。>
:大于。>=
:大于等于。<
:小于。<=
:小于等于。
五、逻辑运算
AWK支持逻辑运算符&&
和||
,用于多个条件的连接。
六、数值运算
AWK支持基本的算术运算,包括加、减、乘、除和取整。
七、输出处理
AWK默认输出字段之间使用空格分隔,OFS
可指定输出字段分隔符,默认为空格。ORS
指定输出记录分隔符,默认为换行符。
八、特殊用法
过滤行数据:
awk 'NR==5 {print}' file
输出第五行。
批量处理:
awk '{print}' fileawk '{print $0}' file
输出整行内容或第一字段。
字段处理示例:
awk -F":" '{print $1}' fileawk -F:" " '{print $1}' file
根据不同分隔符处理字段。
格式化输出:
awk '{printf "%-8s %-8s %-10s\n",$1,$2,$3}' file
格式化输出指定长度的字符串。
高级应用:
awk 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A," ",B}' file
统计字段值大于100的记录数。
九、实际应用案例
统计文件大小:
ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'
计算普通文件总大小(KB)。
统计netstat状态:
netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n",i," ",sum[i]}''
统计LISTEN
和CONNECTED
状态的连接数量。
成绩表统计:
awk 'BEGIN{math=0;eng=0;com=0;printf "Lineno. Name No. Math English Computer Total\n";printf "------------------------------------------------------------\n"}{math+=$3; eng+=$4; com+=$5;printf "%-8s %-7s %-7s %-7s %-9s %-10s %-7s \n",NR,$1,$2,$3,$4,$5,$3+$4+$5} END{printf "------------------------------------------------------------\n";printf "%-24s %-7s %-9s %-20s \n","Total:",math,eng,com;printf "%-24s %-7s %-9s %-20s \n","Avg:",math/NR,eng/NR,com/NR}' test0
统计并输出学生成绩,计算平均分。
十、总结
AWK作为一款强大的文本处理工具,广泛应用于数据处理和分析。通过合理运用AWK命令,可以高效地完成文本数据的处理任务。无论是简单的过滤还是复杂的数据统计,AWK都能提供强大的支持。
发表评论
最新留言
很好
[***.229.124.182]2025年04月22日 20时14分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VS中 fatal error LNK1123: 转换到 COFF 期间失败 的解决方法
2019-03-09
关于Img标签在固定宽高的容器内部以图片比例缩放存在
2019-03-09
Anaconda3 安装 爬虫库 selenium
2019-03-09
Android Studio基础输入文本框EditText
2019-03-09
python --- 监控客户端是否存活
2019-03-09
python---断言、*kargs元组、**kargs字典综合运行
2019-03-09
pyhton---异常处理的终极语法、网页访问基本读取、网页访问异常处理
2019-03-09
Centos 7.3 计算本目录下的以特定名字文件夹个数
2019-03-09
linux下编程出现 对'sem_wait'未定义的引用解决方案
2019-03-09
ccf小明种苹果
2019-03-09
[C++系列] 48. string类基础知识点
2019-03-09
[每日一题] 66. 客似云来(fib数列公式)
2019-03-09
[每日一题] 85. 红与黑(图、DFS)
2019-03-09
[排序算法] 4. 希尔排序(插入排序)
2019-03-09
[每日一题] 151. 只出现一次的数字(位运算、异或、常规解法)
2019-03-09
[LeetCode 双周赛22] 2. 安排电影院座位(排序、暴力优化、巧妙解法)
2019-03-09
[LeetCode 周赛181] 2. 四因数(暴力、常规解法)
2019-03-09
[M图论+bfs] lc127. 单词接龙(图论难题+建图+bfs求最短路)
2019-03-09