linux shell中awk肯定是一个实用的工具。awk有很多内建的字符串控制函数。我介绍一些用法:
1.for循环:
awk 'BEGIN{ for (i=1;i <=10;i++) {print i*i;} exit;}'
这个是计算10以内1-10的平方。
2.for循环数组元素:
awk 'BEGIN{arr [1]="one";arr [2]="two";arr[3]="three";arr[4]="four"; for (i in arr) { print arr[i]}}'
这是使用for循环输出数组中的元素。
3.查看字符串长度(整个记录的长度)
awk -F: { print length($0),$0}
4.查看字符串在指定字符串中的位置,返回位置编号从1开始。
awk 'BEGIN { str="One Two Three"; subs="Two"; ret=index(str,subs); print ret}'
这个返回值是5。
5.用定界符把字符串分割并且存入数组。
awk 'BEGIN{str="One Two Three"; split(str,arr," "); for(i in arr) {print arr[i]}}'
这里用定界符空格把字符串中的内容,分割成三部分,并且存放到了数组arr中,定界符用双引号括起来。
6.在字符串中用字符起止偏移量生成子串,并且返回子串值。
awk 'BEGIN{ str="hello the world"; subs=substr (str,2,5); print subs}'
这个字符编号是从1开始的。相当于在str字符串中截取了子串,从第二个字符到第五个字符。
7.使用sub(regex,replacement_str,string)把正则表达式匹配到的第一处内容替换成replacement_str。
awk 'BEGIN{str="hello world"; sub("world","linxi",str); print str}'
8.使用gsub()函数,替换掉正则表达式匹配到的所有内容。
awk 'BEGIN{str="hello world world"; gsub("world","linxi",str); print str}'
9.检查正则表达式是否匹配字符串。
awk 'BEGIN { str="hello world";subs="world";ret=match(str,subs); printf "Substring \"%s\" found at %d location.\n",subs,ret}'
返回位置从1开始编号。
鼓励的话语:芝兰生于幽谷,不以无人而不芳;君子修道立德,不以穷困而变节。君子美人,拥有好的品行,也如兰花一样,闲情雅致,让人久处不厌!命是弱者的借口,运是强者的谦词。没有顾忌,必将所向无敌!