awk

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

 

awk

内置字符串函数

 

gsub(r,s)    

在整个

$0

中用

s

替代

gsub(r,s,t)    

在整个

t

中用

s

替代

index(s,t)    

返回

s

中字符串

t

的第一位置

 

length(s)    

返回

s

长度

 

match(s,r)    

测试

s

是否包含匹配

r

的字符串

 

split(s,a,fs)    

fs

上将

s

分成序列

sprint(fmt,exp)    

返回经

fmt

格式化后的

exp 

sub(r,s)    

$0

中最左边最长的子串代替

substr(s,p)    

返回字符串

s

中从

p

开始的后缀部分

 

substr(s,p,n)    

返回字符串

s

中从

p

开始长度为

n

的后缀部分

 

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

用方法。

 

 

gsub

函数有点类似于

sed

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

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

$0

,第二

 

gsub

函数允许指定

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

$0

 

index(s,t)

函数返回目标字符串

s

中查询字符串

t

的首位置。

length

函数返回字符串

s

字符

 

长度。

match

函数测试字符串

s

是否包含一个正则表达式

r

定义的匹配。

split

使用域分隔

fs

 

字符串

s

划分为指定序列

a

sprint

函数类似于

printf

函数

(

以后涉及

)

返回基本输出格式

fmt

 

结果字符串

exp

sub(r,s)

函数将用

s

替代

$0

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

(r)

匹配。

 

sub(s,p)

返回字符串

s

在位置

p

后的后缀。

substr(s,p,n)

同上,并指定子串长度为

n

 

现在看一看

awk

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

 

 

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 

查询字符串

s

t

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

 

Bunny

ny

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

 

 

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

 

3.length

posted on 2015-01-22 12:09  知识天地  阅读(1467)  评论(0编辑  收藏  举报