一、内置变量表
| 属性 | 说明 |
| $0 | 当前记录(作为单个变量) |
| $1~$n | 当前记录的第n个字段,字段间由FS分隔 |
| FS | 输入字段分隔符 默认是空格 |
| NF | 当前记录中的字段个数,就是有多少列 |
| NR | 已经读出的记录数,就是行号,从1开始 |
| RS | 输入的记录他隔符默 认为换行符 |
| OFS | 输出字段分隔符 默认也是空格 |
| ORS | 输出的记录分隔符,默认为换行符 |
| ARGC | 命令行参数个数 |
| ARGV | 命令行参数数组 |
| FILENAME | 当前输入文件的名字 |
| IGNORECASE | 如果为真,则进行忽略大小写的匹配 |
| ARGIND | 当前被处理文件的ARGV标志符 |
| CONVFMT | 数字转换格式 %.6g |
| ENVIRON | UNIX环境变量 |
| ERRNO | UNIX系统错误消息 |
| FIELDWIDTHS | 输入字段宽度的空白分隔字符串 |
| FNR | 当前记录数 |
| OFMT | 数字的输出格式 %.6g |
| RSTART | 被匹配函数匹配的字符串首 |
| RLENGTH | 被匹配函数匹配的字符串长度 |
| SUBSEP | \034 |
/^hao/ 为选择表达式,$0代表是逐行显示匹配表达式的行信息
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk '/^hao/{print $0}' ~/Desktop/tomcat.log
hao你好
hao你猜
设置字段分隔符号(FS使用方法)
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN {FS="hao"}/^hao/{print $1,$NF}' ~/Desktop/tomcat.log
你好
你猜
FS为字段分隔符,可以自己设置,默认是空格,因为在文本里面是”写了hao”,所以用此分隔,如果文件里与自定义的分隔符是一样的,则需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。
记录条数(NR,FNR使用方法)NR得到当前记录所在行
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN {FS="hao"}{print NR,$1,$NF}' ~/Desktop/tomcat.log
1 你好
2 no他也好
3 yes大家好
4 你猜
设置输出字段分隔符(OFS使用方法) 从指定分隔符的位置开始
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN {FS="hao";OFS="->"}{print FNR, $1,$NF}' ~/Desktop/tomcat.log
->->你好
->->no他也好
->->yes大家好
->->你猜
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN {FS=":";OFS="->"}{print FNR, $1,$NF}' ~/Desktop/tomcat.log
->hao你好->hao你好
->haono他也好->haono他也好
->haoyes大家好->haoyes大家好
->hao你猜->hao你猜
设置输出行记录分隔符(ORS使用方法)列转为行纪录
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN {FS=":";ORS="->"}{print FNR, $1,$NF}' ~/Desktop/tomcat.log
1 hao你好 hao你好->2 haono他也好 haono他也好->3 haoyes大家好 haoyes大家好->4 hao你猜 hao你猜->wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$
输入参数获取(ARGC ,ARGV使用)ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ awk 'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {print k"="ARGV[k]; }}' ~/Desktop/tomcat.log
ARGC=2
0=awk
1=/Users/wodezuiaishinageren/Desktop/tomcat.log
获得传入的文件名(FILENAME使用)
#awk 'BEGIN{FS=":";print FILENAME}{print FILENAME}' #~/Desktop/tomcat.log
awk 'BEGIN{print FILENAME}{print FILENAME}' ~/Desktop/tomcat.log
获得linux环境变量(ENVIRON使用)
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ bash Desktop/shell/awk_en.sh
/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/maven/3.3.3/libexec/bin:/usr/local/bin:/bin
OFMT格式化数字 四舍五入:
awk 'BEGIN{OFMT="%.3F";print 2/3,1.2345678;}'
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ bash Desktop/shell/awk_ofmt.sh
0.667 1.235
获取外部参数:
语法 awk ‘{action}’ 变量名=“$变量名"
test='测试'
echo | awk '{print test}' test="$test"
wodezuiaishinagerendeMacBook-Pro:~ wodezuiaishinageren$ bash Desktop/shell/awk_get_paramter.sh
测试
运算符操作
| 运算符 | 描述 |
| 赋值运算符 | |
| = += -= *= /= %= ^= **= | 赋值语句 |
| 逻辑运算符 | |
| || | 逻辑或 |
| && | 逻辑与 |
| 正则运算符 | |
| ~ ~! | 匹配正则表达式和不匹配正则表达式 |
| 关系运算符 | |
| < <= > >= != == | 关系运算符 |
| 算术运算符 | |
| + - | 加,减 |
| * / & | 乘,除与求余 |
| + - ! | 一元加,减和逻辑非 |
| ^ *** | 求幂 |
| ++ -- | 增加或减少,作为前缀或后缀 |
| 其它运算符 | |
| $ | 字段引用 |
| 空格 | 字符串连接符 |
| ?: | C条件表达式 |
| in | 数组中是否存在某键值 |
AWK命令详解
224

被折叠的 条评论
为什么被折叠?



