千家信息网

awk命令(1)

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一、awk的优点和缺点:优点:1.awk用来取列,单独取列简单方便2.awk支持正则表达式3.awk支持变量4.awk支持&&和||5.awk支持流程控制语句,如if 和if/else 条件控制6.a
千家信息网最后更新 2026年11月02日awk命令(1)

一、awk的优点和缺点:

优点:1.awk用来取列,单独取列简单方便

2.awk支持正则表达式

3.awk支持变量

4.awk支持&&和||

5.awk支持流程控制语句,如if 和if/else 条件控制

6.awk支持循环,如while、do-while和for循环

7.awk支持用于跳转或者退出的命令break、continue、next 和exit等

8.awk支持函数

缺点:awk功能强大,相对来说较复杂


二、awk的命令格式:

awk '条件1 {动作1} 条件2 {动作2}...' file.txt


三、awk的用法:

1.打印匹配root的行

[root@localhost ~]# awk '/root/' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin


2.-F选项的作用

2.1以冒号分隔,打印第一列数据;不加-F选项,默认是空格,冒号可以自定义

[root@localhost ~]# awk -F: '{print $1,$3,$5,$7}' /etc/passwd

root 0 root /bin/bash

bin 1 bin /sbin/nologin

daemon 2 daemon /sbin/nologin

...


2.2 -F自定义分隔符,分隔数据

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

57G 7.2G 47G 14% /

/dev/sda1 99M 12M 82M 13% /boot

tmpfs 252M 0 252M 0% /dev/shm


[root@localhost ~]# df -h |grep /$ |awk '{print $4}' |awk -F"%" '{print $1}'

14


2.3cut命令同样实现

[root@localhost ~]# df -h |grep /$ |awk '{print $4}' |cut -d"%" -f 1

14


2.4打印列的时候,逗号来分隔列

[root@localhost ~]# awk -F: '/root/{print $1 $3 $5 $7}' /etc/passwd

root0root/bin/bash

operator11operator/sbin/nologin


[root@localhost ~]# awk -F: '/root/{print $1,$3,$5,$7}' /etc/passwd

root 0 root /bin/bash

operator 11 operator /sbin/nologin


2.5打印列的时候,#来分隔列

[root@localhost ~]# awk -F: '/root/ {print $1"###"$7"###"$3}' /etc/passwd

root###/bin/bash###0

operator###/sbin/nologin###1


3.BEGIN和END的用法

3.1BEGIN的用法

[root@localhost ~]# df -h |grep /$ |awk '{print $4}' |awk -F"%" 'BEGIN{print "root_usage!"} {print $1}'

root_usage!

14


3.2BEGIN和END一起用,\n用来换行

[root@localhost ~]# df -h |grep /$ |awk '{print $4}' |awk -F"%" 'BEGIN{print "\nroot_usage!" "\n==========="} {print $1} END{print"==========="}'


root_usage!

===========

14

===========


4.FS、OFS、NR、NF的用法

4.1FS等同于-F,以冒号分隔列

[root@localhost ~]# awk 'BEGIN{FS=":"} /root/ {print $1,$3,$5,$7}' /etc/passwd

root 0 root /bin/bash

operator 11 operator /sbin/nologin


4.2OFS改变默认分隔符,用#号分隔列

[root@localhost ~]# awk -F: 'BEGIN{OFS="###"} /root/ {print $1,$3,$5,$7}' /etc/passwd

root###0###root###/bin/bash

operator###11###operator###/sbin/nologin


-v选项也可以实现

[root@localhost ~]# awk -F: -v OFS="###" '/root/ {print $1,$3,$5,$7}' /etc/passwd

root###0###root###/bin/bash

operator###11###operator###/sbin/nologin


4.3分号的用法

[root@localhost ~]# awk 'BEGIN {FS=":";OFS="#"} /root/ {print $1,$7}' /etc/passwd

root#/bin/bash

operator#/sbin/nologin


4.4NR用来打印行号,而且列可以自定义位置打印

[root@localhost ~]# awk -F: '/root/ {print NR,$1,$7,$5,$3}' /etc/passwd

1 root /bin/bash root 0

12 operator /sbin/nologin operator 11


[root@localhost ~]# awk '/root/ {print NR,$0}' /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

12 operator:x:11:0:operator:/root:/sbin/nologin


4.5打印空行

[root@localhost ~]#awk '/^$/{print NR}' /etc/passwd



4.6这两个命令等效,但grep的效率更高

[root@localhost ~]# awk '/root/ {print NR,$0}' /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

12 operator:x:11:0:operator:/root:/sbin/nologin


[root@localhost ~]# grep -n 'root' /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

12:operator:x:11:0:operator:/root:/sbin/nologin


4.7NF用来打印列数,NF打印出有7列,$NF打印出最后一列

[root@localhost ~]# awk -F: '/root/ {print NR,NF,$NF,$0}' /etc/passwd

1 7 /bin/bash root:x:0:0:root:/root:/bin/bash

12 7 /sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin


5.awk中的比较

<

<=

>

>=

== 等于

!=不等于

~匹配

!~不匹配


5.1打印大于等于37行的第一列

[root@localhost ~]# awk -F: 'NR>=37 {print NR,$1}' /etc/passwd

37 xfs

38 gdm

39 pegasus

40 oracle


5.2打印大于等于60的第四列

[root@localhost shell]#cat awk.txt

1 80 1 li

2 60 2 wang

3 70 3 zhang

4 10 4 zhao

[root@localhost shell]# awk '$2>=60 {print $4}' awk.txt

li

wang

zhang


5.3打印第一列匹配root的字段

[root@localhost ~]# awk -F: '$1=="root" {print $1,$3,$5,$7}' /etc/passwd

root 0 root /bin/bash


5.4打印全文匹配root的字段

[root@localhost ~]# awk -F: '$0~/root/ {print NR,$1,$7,$5,$3}' /etc/passwd

1 root /bin/bash root 0

12 operator /sbin/nologin operator 11


5.5打印第六列匹配root的字段

[root@localhost ~]# awk -F: '$6 ~/root/{print $1,$5,$6}' /etc/passwd

root root /root

operator operator /root


5.6打印第七行到第十二行中的字段

[root@localhost /]# awk -F : 'NR==7,NR==12 {print NR,$1,$7}' /etc/passwd

7 shutdown /sbin/shutdown

8 halt /sbin/halt

9 mail /sbin/nologin

10 news

11 uucp /sbin/nologin

12 operator /sbin/nologin


6.if判断

6.1第一列等于root就打印

[root@localhost ~]# awk -F: '{if($1=="root")print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash


6.2打印第一列匹配oracle的行

[root@localhost ~]# cat /etc/passwd |awk '{if($1 ~ "oracle") print NR,$0}'

40 oracle:x:500:501::/home/oracle:/bin/bash


6.3打印最后一列匹配bash的行

[root@localhost ~]# awk -F: '{if($NF~/bash/) print NR,$1,$NF}' /etc/passwd

1 root /bin/bash

31 postgres /bin/bash

35 mysql /bin/bash

40 oracle /bin/bash

支持 命令 字段 冒号 条件 优点 分隔符 动作 数据 时候 缺点 循环 控制 复杂 强大 两个 位置 作用 全文 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州淘业互联网络科技 湖南永感互联网科技有限公司 新华互联网科技学院 互联网科技社 华中科技大学互联网 互联网科技的未来发展 互联网金融监管科技 济南华为互联网科技产业总部基地 成都互联网科技公司100强 昭通云南众福互联网科技有限公司 智腾互联网科技有限公司 移动互联网年度科技创新 本届互联网博览会上的黑科技 阿里互联网科技企业 上海科技产业互联网平台 皮皮虾互联网科技有限公司 互联网风格科技公司名称 广西科技产业互联网是什么 互联网科技品牌 六子台科技互联网展会 科技互联网产品 上海互联网科技有限公司 猪兼强互联网科技 衡水科技产业互联网平台 须眉科技是互联网公司吗 广州慧亚互联网科技怎么样 重庆互联网医院沙龙医盟信息科技 内蒙古九一互联网科技 怎样加入科技互联网 广东工业互联网大赛深圳学泰科技
0