您的位置首页百科知识

Linux awk命令详解

Linux awk命令详解

的有关信息介绍如下:

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开头的行