Linux awk命令详解
的有关信息介绍如下:
Awk是Linux命令三剑客之一,在linux中擅长对文件格式化输出,在日志和文本中对数据进行格式化处理。我们来看看awk的常见用法。
案例一:awk截取指定域,在日志的处理和监控中,我们经常会截取指定的字符来进行后续处理。
例如:从df -h命令中提取/目录所占百分比(监控经常会用到)
如图,使用df -h命令查看磁盘空间,若是想使用脚本获取根目录百分比,按照如下处理
df -h | grep -w / | awk '{print $5}' 输出百分比
说明:print后边打印变量使用如下
$0 这个表示文本处理时的当前行
$1 表示文本行被分隔后的第 1 个字段列
$2 表示文本行被分割后的第 2 个字段列
$3 表示文本行被分割后的第 3 个字段列
$n 表示文本行被分割后的第 n 个字段列
案例二:awk中的判断输出
awk -F: '{if($3>=1000){print "CommonUser:",$1}}' /etc/passwd
如果uid大于等于1000,输出用户名,否者不输出,-F后边跟字符的分隔符,不加-F默认空格分隔。
案例三:NR 表示文件中的行号,表示当前是第几行
NF 表示文件中的当前行列的个数
FS 表示 awk 的输入分隔符,默认分隔符为空格和制表符,你可以对其进行自定义设置
OFS 表示 awk 的输出分隔符,默认为空格,你也可以对其进行自定义设置
awk -F, '{ OFS="|" }{ print $1,$2 }' 123.txt----------使用|替代原有的逗号进行格式化输出
在 awk 中使用数学运算
我们经常会遇到需要统计相同key的value总和
awk '{sum[$1]+=$2}END{for(i in sum)print i,sum[i]}' 123.txt
在 awk 中使用正则表达式 //中是要匹配的字符
awk '/^math/ {print }' 123.txt--------匹配以math开头的行



