转:http://blog.163.com/njut_wangjian/blog/static/165796425201611100261205/
awk基本语法:http://www.runoob.com/linux/linux-comm-awk.html
awk文章系列,将会详细系统地介绍awk常用的用法。首先介绍最常用的字符串函数。
[root@MySQL ~]# awk 'BEGIN{a[0]="a";a[1]="c";a[2]="b";print "before sorting:";for(i in a){print i,a[i]};asort(a);print "after sorting:";for(i in a){print i,a[i]}}'
before sorting:
0 a
1 c
2 b
after sorting:
1 a
2 b
3 c
[root@MySQL ~]# awk 'BEGIN{a[0]="a";a[1]="c";a[2]="b";print "before sorting:";for(i in a){print i,a[i]};asort(a,d);print "after sorting:";for(i in a){print i,a[i]};print ;for(i in d){print i,d[i]}}'
before sorting:
0 a
1 c
2 b
after sorting:
0 a
1 c
2 b
1 a
2 b
3 c
注:sub和gsub函数功能相同,前者指替换匹配的第一个字符串,而后者进行全局替换[root@MySQL ~]# awk 'BEGIN{r="or|ll";s="wj";t="hello,world!hello,awk";print sub(r,s,t),t}'
1 hewjo,world!hello,awk
[root@MySQL ~]# awk 'BEGIN{r="or|ll";s="wj";t="hello,world!hello,awk";print gsub(r,s,t),t}'
3 hewjo,wwjld!hewjo,awk
[root@MySQL ~]# echo "hello,world;hello,awk"|awk '{r="or|ll";s="wj";print sub(r,s),$0}'
1 hewjo,world;hello,awk
[root@MySQL ~]# echo "hello,world;hello,awk"|awk '{r="or|ll";s="wj";print gsub(r,s),$0}'
3 hewjo,wwjld;hewjo,awk注:正则表达式另外一种写法
[root@MySQL ~]# echo "hello,world;hello,awk"|awk '{s="wj";print gsub(/or|ll/,s),$0}'
3 hewjo,wwjld;hewjo,awk
#省略参数t
[root@MySQL ~]# echo "hello,world\!hello,awk\!hello linux\!"|awk 'BEGIN{s="ww";r="ll"}{print gensub(r,s,"g")}'
hewwo,world\!hewwo,awk\!hewwo linux\!
#参数h以g或G开头
[root@MySQL ~]# awk 'BEGIN{s="ww";t="hello,world!hello,awk!hello linux!";r="ll";print gensub(r,s,"g",t)}'
hewwo,world!hewwo,awk!hewwo linux!
[root@MySQL ~]# awk 'BEGIN{s="ww";t="hello,world!hello,awk!hello linux!";r="ll";print gensub(r,s,"g1",t)}'
hewwo,world!hewwo,awk!hewwo linux!
[root@MySQL ~]# awk 'BEGIN{s="ww";t="hello,world!hello,awk!hello linux!";r="ll";print gensub(r,s,"G1",t)}'
hewwo,world!hewwo,awk!hewwo linux!
[root@MySQL ~]# awk 'BEGIN{s="ww";t="hello,world!hello,awk!hello linux!";r="ll";print gensub(r,s,"g1",t)}'
hewwo,world!hewwo,awk!hewwo linux!