$0代替所有域 A.adust 01/99 78923 Afdadf 42 20 9 B.bdust 02/99 78923 Bfdadf 43 21 10 awk 'BEGIN{print "begin................."}{print $0}END{print "end....................."}' grad.txt 大括号内逻辑语句,含赋值等|前无括号判断 后大括号打印 ~ 匹配正则表达式 !~ 不匹配正则表达式 {if($4~/Lfdadf/)print} 如果第四列含有Lfdadf就打印 awk '{if($6~/2/)print $0}' my.txt 第六列中含有2的话就打印 '$5=="66" {print}'打印五列等于66的 '$5 != "66" {print}'打印五列不为66的 '$0 !~ /Ufdadf/ {print}' 打印不匹配Ufdadf的 '/[Yy]dust/' awk '$2 ~/^..3/' my.txt 第二域第三个字符是以3开头的 awk '$5 ~/(66|67)/' my.txt 第五域是66或者67 =============内置变量============================== ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域个数 NR 已读的记录数 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 =================================================== awk '{print NR}' echo `pwd` | awk -F/ '{print $5}' ==============内置的字符串函数================================= gsub(r,s) 在整个$0中用s替代r 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 substr(s,p) 返回字符串 s中从p开始的后缀部分 substr(s,p,n) 返回字符串 s中从p开始长度为 n的后缀部分 ============================================================== awk 'gsub(/99/, 6666) {print $0}' my.log把所有的99替换为6666 awk 'BEGIN{print length("abc")}' awk输出函数printf echo "65" | awk '{printf "%c\n", $0}' A awk脚本文件 #!/bin/awk -f hadoop@hadoop:$ pg a.log b.log c.log aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccc
awk动物
猜你喜欢
转载自houshangxiao.iteye.com/blog/2090271
今日推荐
周排行