awk 分隔符_上古神器AWK

2e3e2caa3235b36c5d1156d764117818.png

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。

使用方法:
awk '{pattern+action}' {filenames}

三种方式调用awk:

1,awk [-F field-separator] 'commands' input-file(s)
2,shell脚步方式
3,将所有的awk命令插入一个单独文件,然后调用

awk 内置变量:

ARCC     命令行参数个数
ARGV     命令行参数排列
ENVIRON  支持队列中系统环境变量的使用
FILENAME awk 浏览的文件名
FNR      浏览文件的记录数
FS       设置输入域分隔符,等价于命令行 -F选项
NF       浏览记录的域的个数
NR       已读的记录数
OFS      输出域分隔符
RS       控制记录分割符

FOR EXAMPLE:

输出方法printf:

awk -F ':' '{printf("filename:%10s, linenumber:%s,columns:%s, linecontent:%sn",
FILENAME,NR,NF,$0)}' /etc/passwd

统计文件夹下文件的大小:

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} 
END{print "[end]size is ", size/1024/1024,"M"}'

条件语句:

awk中的条件语句是从C语言中借鉴来的

循环语句:

awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,
这些关键字的语义和C语言中的语义完全相同。
FOR EXAMPLE:
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; 
END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

高级用法:

1,指定多个分隔符:分隔符写成放到方括号中,如$awk -F'[ :/t]' '{print $1,$3}'  test  
2,awk的key的变态用户: awk '{a[$1,"/t", $2] += $4} END {for (uin in a) printf("%s/t%d/n", uin, a[uin])  }'  test
3,awk的范围模版:awk '/root/,/MySQL/' test将显示root第一次出现到mysql第一次出现之间的所有行。
4,awk的重定向:awk 可使用shell的重定向符进行重定向输出,如:$ awk '$1 = 100 {print $1 > "output_file" }' test

#

5,获取数组的长度:awk 'BEGIN{info="it is a test";lens=split(info,tA," ");
print length(tA),lens,tA[1];}'

注意:数组下标是从1开始,与c数组不一样。
6,多维数组:awk提供了逻辑上模拟二维数组的访问方式,awk使用一个特殊的字符串
SUBSEP (034)作为分割字段,既是a[2,4]的键值为20344

#

7,两个文件行的关联:awk -F | 'NR==FNR{a[$1]=$0;next}
  {print a[$1]"|"$2}' 文件1 文件2
8,显示最后一行:awk 'END{print $0}' file
9,显示最后一列:awk '{print $NF}' file

#

10,求最小值:awk '
{min=65535;
for(i=1;i<=NF;i++)
{min=($i<min)? $i:min};
print min
}' file
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值