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 将忽略模式匹配中的大小写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值