天天看点

awk 字符串函数

awk

提供了许多强大的字符串函数,见下表:

内置字符串函数

gsub(r,s)    

在整个

$0

中用

s

替代

gsub(r,s,t)    

t

index(s,t)    

返回

中字符串

的第一位置

length(s)    

长度

match(s,r)    

测试

是否包含匹配

r

的字符串

split(s,a,fs)    

fs

上将

分成序列

sprint(fmt,exp)    

返回经

fmt

格式化后的

exp 

sub(r,s)    

中最左边最长的子串代替

substr(s,p)    

返回字符串

中从

p

开始的后缀部分

substr(s,p,n)    

开始长度为

n

的后缀部分

详细说明一下各个函数的使

用方法。

gsub

函数有点类似于

sed

查找和替换。它允许替换一个字符串或字符为另一个字符串或字

符,并以正则表达式的形式执行。第一个函数作用于记录

,第二

函数允许指定

目标,然而,如果未指定目标,缺省为

index(s,t)

函数返回目标字符串

中查询字符串

的首位置。

length

函数返回字符串

字符

长度。

match

函数测试字符串

是否包含一个正则表达式

定义的匹配。

split

使用域分隔

字符串

划分为指定序列

a

sprint

函数类似于

printf

函数

(

以后涉及

)

返回基本输出格式

结果字符串

exp

sub(r,s)

函数将用

中最左边最长的子串,该子串被

(r)

匹配。

sub(s,p)

在位置

后的后缀。

substr(s,p,n)

同上,并指定子串长度为

现在看一看

中这些字符串函数的功能。

1.gsub 

要在整个记录中替换一个字符串为另一个,使用正则表达式格式,

/

目标模式

,替换模式

。例如改变学生序号

4842

4899

$ awk 'gsub('4842/, 4899) {print $0}' grade.txt 

J.Troll 07/99 4899 Brown-3 12 26 26 

echo "i am hifdafafdst"|awk '{gsub(/am/,"abcc",$0);print $0}' 

i abcc hifdafafdst 

2.index 

查询字符串

出现的第一位置。必须用双引号将字符串括起来。例如返回目标字符串

Bunny

ny

出现的第一位置,即字符个数。

$ awk 'BEGIN {print index("Bunny", "ny")} grade.txt 

3.length