shell编程---awk有哪些功能?

awk 擅长文件格式化,经常在复杂文件处理上用的上,也往往也是一道shell编程常见面试题

1.文件处理

[root@egrep ~]# echo "hello world" > test
[root@egrep ~]# awk '{print}' test
hello world
[root@egrep ~]# print '{print $1}' test
hello

2.与磁盘命令组合使用

[root@egrep ~]# df -h
第一列        第二列   第三列  第四列  第五列  第六列 
Filesystem   Size    Used   Avail  Use%   Mounted on
/dev/xvda1   40G     2.4G   35G    7%   /
devtmpfs     3.9G     0        3.9G    0%   /dev
tmpfs           3.9G     0        3.9G    0%   /dev/shm
tmpfs           3.9G   408K    3.9G    1%   /run
tmpfs           3.9G     0        3.9G  0%   /sys/fs/cgroup
tmpfs           783M    0       783M  0%   /run/user/0
[root@egrep ~]# df -h | awk '{print $5}'
Use%
7%
0%
0%
1%
0%
0%
也可以组合打印两列数据
df -h | awk '{print $1,$2}'

3.统计

在这里插入图片描述
在这里插入图片描述
awk脚本

#运行前
BEGIN{
MATH = 0
ENGLISH = 0
COMPUTER = 0
printf "NAME    NO    MATH    ENGLISH    COMPUTER    TOTAL\n"
printf "--------------------------------------------------\n"
#运行中
MATH += $3
ENGLISH += $4
COMPUTER += $5
printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3, $4, $5, $3+$4+$5 
}
#运行后
END{
printf "--------------------------------------------------\n"
printf "  TOTAL:%10d %8d %8d \n", MATH, ENGLISH, COMPUTER
printf "AVERAGE:%10.2f %8.2f %8.2f\n", MATH/NR, ENGLISH/NR
}
变量 描述
NF 该变量包含每个记录的字段个数。
NR 该变量包含当前的记录个数
FS 该变量是字段分隔符
RS 该变量是记录分隔符
OFS 该变量是输出字段分隔符
ORS 该变量是输出记录分隔符
FILENAME 该变量包含所读取的输入文件的名称
IGNORECASE 当 IGNORECASE 设置为非空值 ,GAWK 将忽略模式匹配中的大小写。
发布了33 篇原创文章 · 获赞 0 · 访问量 894

猜你喜欢

转载自blog.csdn.net/nickyff/article/details/104891159
今日推荐