博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编程系列19--文本处理三剑客之awk中的字符串函数
阅读量:6712 次
发布时间:2019-06-25

本文共 3335 字,大约阅读时间需要 11 分钟。

shell编程系列19--文本处理三剑客之awk中的字符串函数字符串函数对照表(上)函数名              解释                函数返回值length(str)         计算字符串长度            整数长度值index(str1,str2)    在str1中查找str2的位置        返回值为位置索引,从1开始计数tolower(str)        转换为小写            转换后的小写字符串toupper(str)        转换为大写            转换后的大写字符串substr(str,m,n)        从str的m个字符开始,截取n位    截取后的子串split(str,arr,fs)    按fs切割字符串,结果保存在arr    切割后的子串的个数match(str,RE)        在str中按照RE查找,返回位置    返回索引位置 字符串函数对照表(下)函数名            解释                                函数返回值sub(RE,RepStr,str)    在str中搜索符合RE的字串,将其替换为RepStr;只替换第一个        替换的个数gsub(RE,RepStr,str)    在str中搜索符合RE的字串,将其替换为RepStr;替换所有        替换的个数awk中的字符串函数length(str)        计算长度index(str1,str2)    返回在str1中查询到的str2的位置tolower(str)        小写转换toupper(str)        大写转换split(str,arr,fs)    分隔字符串,并保持到数组中match(str,RE)        返回正则表达式匹配到的子串的位置substr(str,m,n)        截取子串,从m个字符开始,截取n位,n若不指定,则默认sub(RE,RepStr,str)    替换查找到的第一个子串gsub(RE,RepStr,str)    替换查找到的所有子串1、以:为分隔符,返回/etc/passwd中每行中每个字段的长度[root@localhost shell]# cat len.awk BEGIN{    FS=":"}{    i=1    while(i<=NF)     {        if (i==NF)        {            printf "%d",length($i)        }        else        {            printf "%d:",length($i)        }        i++    }    print ""}[root@localhost shell]# awk -f len.awk passwd 4:1:1:1:4:5:93:1:1:1:3:4:136:1:1:1:6:5:133:1:1:1:3:8:132:1:1:1:2:14:13...2、搜索字符串"I have a dream"中出现"ea"字符串的位置[root@localhost shell]# awk 'BEGIN{str="I have a gream";printf "%d\n",index(str,"ea")}'123、将字符串"Hadoop is a bigdata Framework"全部转换为小写[root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print tolower(str)}'hadoop is a bigdata framework4、将字符串"Hadoop is a bigdata Framework"全部转换为大写[root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print toupper(str)}'HADOOP IS A BIGDATA FRAMEWORK5、将字符串"Hadoop Kafka Spark Storm HDFS YARN Zookeeper",按照空格为分隔符,分隔[root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr);for (i in arr) print arr[i];}'StormHDFSYARNZookeeperHadoopKafkaSpark6、搜索字符串"Transaction 2345 Start:Select * from master"第一个数字出现的位置[root@localhost shell]# awk 'BEGIN{str="Transaction 2345 Start:Select * from master";print match(str,/[0-9]/)}'137、截取字符串"transaction start"的子串,截取条件从第4个字符开始,截取5位[root@localhost shell]# awk 'BEGIN{str="transaction start";print substr(str,4,5)}'nsact8、替换字符串"Transaction 243 Start,Event ID:9002"中第一个匹配到的数字串替换为$符号[root@localhost shell]# awk 'BEGIN{str="Transaction 243 Start,Event ID:9002";count=sub(/[0-9]+/,"$",str);print count;print str}'1Transaction $ Start,Event ID:9002# gsub是替换全部匹配到的数字[root@localhost shell]# awk 'BEGIN{str="Transaction 243 Start,Event ID:9002";count=gsub(/[0-9]+/,"$",str);print count;print str}'2Transaction $ Start,Event ID:$# 在awk中数组下标从1开始[root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[0]}'[root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[1]}'Hadoop[root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[2]}'Kafka[root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");for(i in arr) {print arr[i]}}'StormHDFSYARNZookeeperHadoopKafkaSpark

 

转载于:https://www.cnblogs.com/reblue520/p/11016866.html

你可能感兴趣的文章
前端开发IDE
查看>>
OpenStack从入门到放弃
查看>>
戴尔和EMC已经成为正式的竞争对手
查看>>
6425C-Lab12 管理DC(1)
查看>>
RocketMQ调研笔记
查看>>
maven 注册 jar
查看>>
高并发写入mysql的设计
查看>>
成长点滴:我不知道该说些什么?
查看>>
Android widget 桌面组件开发
查看>>
HP EVA4400服务器RAID信息丢失数据恢复方法
查看>>
我的友情链接
查看>>
heap中的heapify与依次压入队列的差异
查看>>
找工作体会
查看>>
linux之使用man查看命令手册
查看>>
健康常识
查看>>
Centos 6.3安装配置supervisor进程管理工具
查看>>
jquery ajax超时设置
查看>>
有兴趣,便且坚持下来。。。。。make it
查看>>
我的友情链接
查看>>
takeown 卸载cygwin
查看>>