awk字符串函数(二)

substr函数 substr函数返回从字符串指定位置开始的一个子串。如果指定了子串的长度,则返回字符串的相应部分。如果指定的长度超出了字符串的实际范围,则返回其实际内容。
格式

substr (字符串 ,起始位置 )
substr (字符串 ,起始位置 ,子串长度 )

范例

$ awk  '{print substr("Santa Claus",7,6)}' filename
Claus

说明:在字符串"Santa Claus" 中,打印从位置7开始、长度为6个字符的子串。


match函数:match函数返回正则表达式在字符串中出现的位置,如果未出现,则返回0。match函数把内置变量RSTART设为子串在字符串中的起始位置, RLENGTH则设为子串的长度.这些变量可以被substr函数用来提取相应模式的子串。
格式

match (字符串 ,正则表达式 )

范例

$ awk  'END{start=match("Good ole USA",/[A-Z]+$/);print start}' filename
10

说明:正则表达式/[A-Z]+$/的意思是查找在字符串尾部连续出现的大写字母.找到的子串USA是从字符串"Good ole USA"的第10个字符开始的。如果字符串未能匹配到正则表达式,则返回0。
范例

$ awk  'END{start=match("Good ole USA",/[A-Z]+$/);\
print RSTART,RLENGTH}'
 filename
10  3
$ awk  'BEGIN{line="Good ole USA"};\
END{match(line,/[A-Z]+$/);\
print substr(line,RSTART,RLENGTH)}'
 filename
USA

说明:
1.变量RSTART被match函数设置为匹配到的正则表达式在字符串中的起始位置。变量RLENGTH则被设为子串的长度。
2.substr函数在变量line中查找子串,把RSTART和RLENGTH的值(由match函数设置)作为子串的起始位置和长度。


split函数 split函数使用由第3个参数指定的字段分隔符,把字符取拆分成一个数组。如果没有提供第3个参数,awk将把FS 的当前值作为字段分隔符
格式

split (字符串 ,数组 ,字段分隔符 )
split (字符串 ,数组 )

范例

$ awk  'BEGIN{split("12/25/2001",date,"/");print date[2]}' filename

说明:split函数把字符串12/25/2001拆分为数组date。以正斜杠作为字段分隔符。数组date的下标从1开始。awk将打印数组date的第2个元素。


sprinf函数 sprintf函数返回一个指定格式的表达式。可以在sprintf函数中使用printf函数的格式规范。
格式

variable  = sprintf ( "含有格式说明的字符串" ,表达式 1  ,表达式 2 ,... ,表达式n )

范例

$ awk  '{line=sprintf("%-15s %6.2f ",$1,$3);print line}' filename

说明:按照printf的规范设置第1个和第3个字段的格式(一个左对齐、长度为15的字符串和一个右对齐、长度为6个字符的浮点数)。结果被赋给用户自定义的变量line。请参见printf函数

参考资料:http://www.linuxawk.com/jiaocheng/298.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值