awk基本操作

 

一、内置变量表

属性说明
$0当前记录(作为单个变量)
$1~$n当前记录的第n个字段,字段间由FS分隔
FS输入字段分隔符 默认是空格
NF当前记录中的字段个数,就是有多少列
NR已经读出的记录数,就是行号,从1开始
RS输入的记录他隔符默 认为换行符
OFS输出字段分隔符 默认也是空格
ORS输出的记录分隔符,默认为换行符
ARGC命令行参数个数
ARGV命令行参数数组
FILENAME当前输入文件的名字
IGNORECASE如果为真,则进行忽略大小写的匹配
ARGIND当前被处理文件的ARGV标志符
CONVFMT数字转换格式 %.6g
ENVIRONUNIX环境变量
ERRNOUNIX系统错误消息
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数组中是否存在某键值

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值