Awk是一个强大的文本分析工具。与grep搜索和sed编辑相比,awk在分析数据和生成报告时特别强大。本文主要介绍Linux中awk命令的相关知识,有需要的朋友可以参考一下。
简介
Awk是一个强大的文本分析工具。与grep搜索和sed编辑相比,awk在分析数据和生成报告时特别强大。简单来说,awk就是逐行读取文件,以空格为默认分隔符对每一行进行切片,然后对切割的部分进行分析。
awk有三个不同的版本:awk、nawk和gawk,在没有特别说明的情况下一般简称为gawk。gawk是GNU版的awk。
Awk的名字来源于其创始人阿尔弗雷德艾侯、彼得温伯格和布莱恩柯尼根的姓名首字母。实际上,AWK确实有自己的语言:AWK编程语言,它被三位创始人正式定义为“风格扫描和处理语言”。它允许你创建简短的程序来读取输入文件、分类数据、处理数据、对输入进行计算、生成报告等功能。
一、选项参数说明
Awk是一种处理文本文件的语言。我们可以使用awk - help来检查其选项参数,如下所示:
二、基本用法
1.行匹配语句,这里awk只能跟单引号,格式如下:
awk“{ matched content }”匹配的文件名
例如:
现有的测试文件测试如下:
使用以下命令输出文本中每行的第1项和第4项:
awk“{打印$1,$4}”测试
您还可以添加以下内容,使其成为打印格式:
awk“{ printf %-8s %-10s n ,$1,$4}”测试
2.指定分隔符
awk“{ printf %-8s %-10s n ,$1,$4}”测试
例如:
有以下测试文件:
执行以下命令以逗号输出每行的第一项和第二项:
awk -F, {打印$1,$2} 测试
您也可以使用以下格式的内置变量:
awk BEGIN{FS=, } {print $1,$2} 测试
对于多个分隔符,首先使用空格进行拆分,然后使用其他分隔符进行拆分:
awk -F [,] {打印$1,$2,$4} 测试
3.设置变量
awk -v
例如:
以下数据可用:
执行以下命令,将每行的第一项加1:
awk-va=1“{打印$1,$1 a}”测试
您也可以使用以下命令来设置多个变量:
awk-va=1-VB=s {打印$1,$1 a,$1b} 测试
4.通过awk脚本运行awk命令。
Awk -f awk脚本文件名
例如:
awk -f文件. awk测试
三、运算符
例如:
1.筛选第一列大于2的行
awk 12美元测试
2.筛选等于2的列。
awk $1==2 {print $1,$3} 测试
3.筛选第一列大于2且第二列等于Are的行。
awk $12 $2==是 {打印$1,$2,$3} 测试
四、内建变量
例如:
awk BEGIN { printf % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s n ,文件名, ARGC , FNR , FS , NF , NR , OFS , ORS , RS ;printf - n } { printf % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s n ,文件名,ARGC,FNR,FS,NF,NR,OFS,ORS,RS} 测试
awk-F BEGIN { printf % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s n ,文件名, ARGC , FNR , FS , NF , NR , OFS , ORS , RS ;printf - n } { printf % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s % 4s n ,文件名,ARGC,FNR,FS,NF,NR,OFS,ORS,RS} 测试
awk“{打印数量,FNR,$1,$2,$3}”测试
awk“{ print $ 1,$2,$ 5 }”OFS=“$”测试
五、使用正则,字符串匹配
例如:
1.输出包含“th”的第二列,并打印第二和第四列。
awk $2 ~ /th/{print $2,$4} 测试
~表示模式的开始,匹配的模式存储在//。
2.输出包含“re”的行
awk /re/测试
六、忽略大小写
awk BEGIN{IGNORECASE=1} /this/测试
七、模式取反
两美元!~ /th/{print $2,$4} 测试
啊!/th/{print $2,$4}测试
八、awk脚本
关于awk脚本,需要注意两个关键字BEGIN和END:
(1)开始{执行前存储语句};
(2)END{存储处理完所有行后要执行的语句}。
例如:
现有数据如下:
我们的awk脚本如下:
执行结果如下:
总结
以上是边肖介绍的Linux中的awk命令。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!