awk

awk '{pattern + action}' {filenames}
pattern可以是某种条件也可以是正则 /正则/
内置变量:FS 分隔符 NF 列数 NR已读的行数 i第i列的值0 整列 FILENAME文件名

awk变成

条件判断

1.echo '11 22' |awk 1==11{print2}'
2.echo '11 22' |awk '{if(1 == 1){print2}}'

循环

1.for(i=1;i<=10;i++){}
2.for(i in 数组){}

内置函数

gsub(r,s) 在整个0中用s替代r,相当于 sed 's///g' gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一位置 length(s) 返回s长度 match(s,r) 测试s是否包含匹配r的字符串 split(s,a,fs) 在fs上将s分成序列a sprint(fmt,exp) 返回经fmt格式化后的exp sub(r,s) 用0中最左边最长的子串代替s,相当于 sed 's///'
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分

常用的命令:

awk '{print (NF-1)}' 列出倒数第二列 awk '{if (NR> 3 && NR < 9) print0}' 打印4-8行
awk '{if (NR> 3 && NR < 9) {print 0} else {print1}}' 4-8行打印全行,其他行打印第一列
awk -F[/:] 多个分隔符
awk 'BEIGN{}END{}'开始前做一些事,最后做一些事
last | awk '{S[3]++} END{for(a in S) {print S[a],a}}'| sort -rh | uniq 查看登录最多的IP信息 ls -l|awk '{if(5>100){count++; sum+=5}} END{print "Count:" count,"Sum: " sum}统计目录下大雨100K的文件数量 awk -F ':' 'BEGIN {count=0;} {name[count] =1;count++;}END{for (i = 0; i < NR; i++) print name[i]}' /etc/passwd 统计所有用户

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux指令中文说明传送入口 整理自Linux指令中文说明 文本和数据进行处理的编程语言awk 是一种编程语言,...
    释闲人阅读 6,502评论 1 6
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 5,043评论 0 8
  • 报告生成器,格式化文本输出,常用选项: -F:指明输入时用到的字段分隔符 -v var=value:自定义变量 介...
    毛利卷卷发阅读 3,529评论 0 1
  • 1、Nginx日志分析日志格式:'$remote_addr - $remote_user [$time_local...
    运维前线阅读 4,110评论 0 4
  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 5,501评论 0 4