【shell命令】awk命令详解

语法:

awk [options] 'pattern{action}' {filenames}

#pattern:表示AWK在数据中查找的内容,就是匹配模式

#action:在找到匹配内容时所执行的一系列命令

选项参数说明

选项参数功能
-F指定输入文件拆分分隔符
-v赋值一个用户定义变量

awk内置变量

内置变量含义
ARGC命令行参数个数
ARGV命令行参数排列
ENVIRON支持队列中系统环境变量的使用
FILENAMEawk浏览的文件名
FNR浏览文件的记录数
FS设置输入域分隔符,等价于命令行 -F选项
NF浏览记录的域的个数, 根据分隔符分割后的列数
NR已读的记录数, 也是行号
OFS输出域分隔符
ORS输出记录分隔符
RS控制记录分隔符
$n$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
$NF$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

演示:

1)默认每行空格切割数据

 echo "abc 123 456" | awk '{print $1"&"$2"&"$3}'

2)打印含有匹配信息的行

搜索awk.txt文件有root关键字的所有行

awk '/root/' awk.txt

# '/root/' 是查找匹配模式, 没有action命令, 默认输出所有符合的行数据

3)打印匹配行中第7列数据

搜索awk.txt文件有root关键字的所有行, 然后以":"拆分并打印输出第7列

awk -F : '/root/{print $7}' awk.txt

4)打印文件每行属性信息

统计awk.txt文件名,每行的行号,每行的列数,对应的完整行内容:

awk -F : '{print "文件名:" FILENAME ",行号:" NR",列数:" NF",完整行内容:" $0}' awk.txt

5)查找以c开头的资源

awk过滤的使用,  查找当前目录下文件名以c开头的文件列表
ls -a|awk '/^c/' awk.txt

6)打印第一列

按照":" 分割查询第一列打印输出
awk -F : '{print $1}' awk.txt

7)打印最后1列

按照":" 分割查询最后一列打印输出
awk -F : '{print $NF}' awk.txt

8)打印倒数第二列

按照":" 分割查询倒数第二列打印输出
awk -F : '{print $(NF-1)}' awk.txt
 # $(NF-N) N是几, 就是倒数第几列

9)打印10到20行的第一列

获取第10到20行的第一列的信息
awk -F : '{if (NR>9 && NR<21) print $1}' awk.txt

10)多分隔符使用

"1:2/3"字符串按照多个分隔符":"或者"/" 分割, 并打印分割后每个列数据

echo "1:2/3"|awk -F [:/] '{print " "$1" " $2" " $3}' 

11)添加开始与结束内容

给数据添加开始与结束
echo -e  "abc\nabc" | awk 'BEGIN{print "开始..."} {print $0} END{print "结束..."}'

# BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。

12)显示空行行号

查询sed.txt中空行所在的行号
sed 'G' sed.txt | awk '/^$/{print NR}' 

13)切割ip

切割IP
ifconfig |awk '/broadcast/{print}' | awk -F " " '{print $2}'

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值