awk正则表达式和内置函数的使用方法实例详解

2019-09-23 09:33:25刘景俊

ORS 输出记录分隔符

RS 控制记录分隔符

12、awk内置字符串处理函数

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 ( f m t , exp )返回经f m t格式化后的exp

sub ( r, s ,$0) $0中s替换第一次r出现的位置

substr ( s , p )返回字符串s中从p开始的后缀部分

substr ( s , p , n )返回字符串s中从p开始长度为n的后缀部分

13、awk ‘gsub(/6./,78) {print $0}' data.f:将所有“6.”换成78,并输出


awk ‘{if($2==”Sept”) {sub(/3/,”9″,$0); print $0}}' data.f:只替换第一个出现的

awk ‘BEGIN{print index(“hello”,”lo”)}':输出的值为4

awk ‘{if($3==”3BC1997″) print length($3) ” ” $3}' data.f

awk ‘BEGIN{print match(“ABCD”,”B”)}':输出2

awk ‘BEGIN{print match(“ABCD”,/B/)}':“//”和“”””效果一样

awk ‘BEGIN {print split(“123#234#654″, myarray, “#”)}':返回数组元素个数,123#234#654是字符串,以“#”为分隔符,将字符串放入数组。

awk ‘{if($1==34) print substr($3,2,7)}' data.f

awk ‘BEGIN{print substr(“helloleeboy”,2,7)}':输出ellole

awk ‘BEGIN{print substr(“helloleeboy”,2,7)}' data.f:输出n遍ellole,n为data.f的行数

14、awk ‘BEGIN{print”MaytDaynnMay 104141171″}':104141171表示Day。t:tab键,n:换行,ddd:八进制

15、echo “65” | awk ‘{printf “%cn”,$0}':printf函数,和c差不多,输出为A。(ASCII码)


echo “65” | awk ‘{printf “%dn”,$0}':输出65数字。

awk ‘{printf “%-15s %sn”,$2,$3}' data.f:“%-15s”左对齐15个字符长度

awk ‘{if(age<$1) print $0}' age=80 data.f和 awk ‘{age=49;if(age<$1) print $0}' data.f结果一样,前者将值传入awk,后者在awk中定义了一个变量。