awk常用功能

1、NF 与 $NF 的区别

NF表示:输出每一行的总数
$NF表示:输出每一行的最后一列

2、awk 使用多个分隔符

#使用 . 和空格两个分隔符

cat /etc/redhat-release | awk -F '[. ]' '{for(i=1;i<=NF;i++) print $i}'
CentOS
Linux
release
7
9
2009
(Core)
3、常用的for循环

在读取每个字段内容for(i=1;i<=NF;i++)运用很多,固定格式

cat /etc/redhat-release \
| awk -F '[. ]' '{for(i=1;i<=NF;i++){if($i~"^[0-9]"){print $i;break}}}'
~匹配:  与==相比不是精确比较
!~不匹配:不精确比较
==等于:必须全部相等,精确比较
!=不等于:精确比较
4、awk常用计算
vim test.txt
1 2 3
1 2 3
1、求和
cat test.txt | awk -F " "  '{sum+=$2}END{print sum }'
2、求平均
cat test.txt|awk '{sum+=$1} END {print "Average = ", sum/NR}'

vim test.txt
2
4
3、求最大值
cat test.txt|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
4、求最小值(min的初始值设置一个超大数即可)
cat test.txt|awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'

5、awk外部传参

-v a=2
echo "192.168.199.200"|awk -v a=2 -F . '{print $a}'
五 awk统计字符频率
echo "aa bb aa v d 2 3 hahaha ii test" |awk '{for(i=1;i<=NF;i++)count[$i]++;{for(j in count)print j"="count[j]}}'| sort -n -k1
# 第一个for是按照空格符分割echo的输出
# count[$i]++是累加每个字符的数量,比如count[aa],有两个,会加两次
# 这个逻辑到此结束,所以用分号
# 第二个for是输出list

结果:

aa=2
bb=1
d=1
hahaha=1
ii=1
test=1
v=1
2=1
3=1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值