介绍awk命令的基本使用
awk的简介:一个非常强大的数据处理命令,支持条件判断,数组,循环等功能,与grep,sed一同被称为三剑客
awk的应用场景:通常对数据进行列的提取
语法:
awk ‘条件一{执行动作}条件二{执行动作}……’ 文件名
或者
awk[选项]‘条件一{执行动作}条件二{执行动作}……’ 文件名
特殊要点说明
printf :格式化输出,不会自动换行
print:打印出内容,默认会自动换行
\t :制表符
\n:换行符
awk的一些特殊要点与举例说明
NR :行号
$1:代表第一列
$2:代表第二列
$NF :代表最后一列
-F :指定分隔符
BEGIN:在读取所有行内容前就开始执行,一般用来初始化操作
END:结束的时候执行
eg:使用awk命令打印第一行

[root@xjm local]# cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
xjm
haha
eg :使用awk命令打印出第四行的第一列
[root@xjm local]# df -h | awk 'NR==4 {print $1}'
tmpfs
eg:使用awk命令打印出第二行至第五行的第一列
[root@xjm local]# df -h | awk '(NR>=2&&NR<=5) {print $1}'
/dev/mapper/centos-root
devtmpfs
tmpfs
tmpfs
EG:使用awk命令打印出第二行至第五行的最后一列
[root@xjm local]# df -h | awk '(NR>=2&&NR<=5) {print $NF}'
/
/dev
/dev/shm
/run
eg:使用awk命令打印出/etc/passwd第一列 以:为分隔符;
[root@xjm local]# cat /etc/passwd | awk -F ":" '{print $1}'
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
xjm
haha
eg:写一个shell脚本 1.在首行加一句:文件系统的使用情况, 并要求换行。
BEGIN {printf"文件系统使用情况:\n \n"},
2.打印出第一列 和第五列
[root@xjm local]# cat 123.sh
#!/bin/bash
df -h | awk 'BEGIN {printf"文件系统使用情况:\n \n"} {printf $1} {printf "文件系统使用率:"} {print $5}'| grep -v 'Filesystem'
[root@xjm local]# sh 123.sh
文件系统使用情况:
/dev/mapper/centos-root文件系统使用率:8%
devtmpfs文件系统使用率:0%
tmpfs文件系统使用率:0%
tmpfs文件系统使用率:2%
tmpfs文件系统使用率:0%
/dev/sda1文件系统使用率:14%
tmpfs文件系统使用率:0%
[root@xjm local]#
END 结束的时候执行
eg:在末尾加上一句一切正常 END {printf “一切正常 \n”}
[root@xjm local]# cat 123.sh
#!/bin/bash
df -h | awk 'BEGIN {printf"文件系统使用情况:\n \n"} {printf $1} {printf "文件系统使用率:"} {print $5} END {printf "一切正常 \n"}'| grep -v 'Filesystem'
[root@xjm local]# sh 123.sh
文件系统使用情况:
/dev/mapper/centos-root文件系统使用率:8%
devtmpfs文件系统使用率:0%
tmpfs文件系统使用率:0%
tmpfs文件系统使用率:2%
tmpfs文件系统使用率:0%
/dev/sda1文件系统使用率:14%
tmpfs文件系统使用率:0%
一切正常
[root@xjm local]#
本文介绍了awk命令的基础用法,包括其在数据处理中的应用场景、语法特点,如条件判断、数组、循环等。通过实例展示了如何利用awk进行列提取、格式化输出,并探讨了BEGIN和END规则的应用。

566

被折叠的 条评论
为什么被折叠?



