awk命令_Linux awk 命令用法详解

原创 浪子丶刘少  2019-04-23 09:20  阅读 2,258 次 评论 0 条 百度已收录

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

语法形式

awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)

常用命令选项

-F fs   fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-v var=value   赋值一个用户定义变量,将外部变量传递给awk
-f scripfile  从脚本文件中读取awk命令
-m[fr] val   对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

awk内置变量(预定义变量)

说明:[A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk

$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 
$0 这个变量包含执行过程中当前行的文本内容。
[N] ARGC 命令行参数的数目。
[G] ARGIND 命令行中当前文件的位置(从0开始算)。
[N] ARGV 包含命令行参数的数组。
[G] CONVFMT 数字转换格式(默认值为%.6g)。
[P] ENVIRON 环境变量关联数组。
[N] ERRNO 最后一个系统错误的描述。
[G] FIELDWIDTHS 字段宽度列表(用空格键分隔)。
[A] FILENAME 当前输入文件的名。
[P] FNR 同NR,但相对于当前文件。
[A] FS 字段分隔符(默认是任何空格)。
[G] IGNORECASE 如果为真,则进行忽略大小写的匹配。
[A] NF 表示字段数,在执行过程中对应于当前的字段数。
[A] NR 表示记录数,在执行过程中对应于当前的行号。
[A] OFMT 数字的输出格式(默认值是%.6g)。
[A] OFS 输出字段分隔符(默认值是一个空格)。
[A] ORS 输出记录分隔符(默认值是一个换行符)。
[A] RS 记录分隔符(默认是一个换行符)。
[N] RSTART 由match函数所匹配的字符串的第一个位置。
[N] RLENGTH 由match函数所匹配的字符串的长度。
[N] SUBSEP 数组下标分隔符(默认值是34)。

常用awk使用示例

1.匹配文件中包含root关键字的行

awk '/root/' 文件名

2.截取df -h 命令输出结果的第二行

df -h | awk 'NR==2'

3.截取df -h命令输出结果的第二列

df -h | awk '{print $2}"

4.截取dh -h命令输出结果的第2列和第3列

df -h | awk ’{prink $2,$3}'

5.截取df -h命令输出结果包含sda3关键字所在行的第二列

df -h | awk '/sda3/{print $2}'

6.以指定格式显示date命令的年和月份

date | awk '{print "year:"$6 "/nMonth:"$2}'

7.截取 df -h 命令输出结果中包含 sda3 关键字的行并显示行号

df -h|awk '/sda3/ {print NR,$0}'

8.匹配 df -h 命令输出结果中第一列包含关键字 sda3 的行

df -h|awk '$1 ~ /sda3/'

9.匹配 df -h 命令输出结果中第一列不包含关键字 sda3 的行

df -h|awk '$1 !~ /sda3/'

10.指定分隔符为:截取 passwd 文件中的第 2 列

awk -F ":" '{print $2}' passwd
本文地址:https://www.ezliushao.com/117.html
加入我们:请加入刘少技术博客交流群:扫描二维码刘少技术博客的QQ交流群 | 浪子丶刘少 QQ:1150110267(注:微信暂停添加好友)
版权声明:本文为原创文章,版权归 浪子丶刘少 所有,欢迎分享本文,转载请保留出处!

发表评论


表情