1. shell编程系列19--文本处理三剑客之awk中的字符串函数
  2.  
  3. 字符串函数对照表(上)
  4. 函数名   解释 函数返回值
  5. length(str) 计算字符串长度 整数长度值
  6. index(str1,str2) str1中查找str2的位置 返回值为位置索引,从1开始计数
  7. tolower(str) 转换为小写 转换后的小写字符串
  8. toupper(str) 转换为大写 转换后的大写字符串
  9. substr(str,m,n) strm个字符开始,截取n 截取后的子串
  10. split(str,arr,fs) fs切割字符串,结果保存在arr 切割后的子串的个数
  11. match(str,RE) str中按照RE查找,返回位置 返回索引位置

  12. 字符串函数对照表(下)
  13. 函数名 解释 函数返回值
  14. sub(RE,RepStr,str) str中搜索符合RE的字串,将其替换为RepStr;只替换第一个 替换的个数
  15. gsub(RE,RepStr,str) str中搜索符合RE的字串,将其替换为RepStr;替换所有 替换的个数

  16. awk中的字符串函数
  17. length(str) 计算长度
  18. index(str1,str2) 返回在str1中查询到的str2的位置
  19. tolower(str) 小写转换
  20. toupper(str) 大写转换
  21. split(str,arr,fs) 分隔字符串,并保持到数组中
  22. match(str,RE) 返回正则表达式匹配到的子串的位置
  23. substr(str,m,n) 截取子串,从m个字符开始,截取n位,n若不指定,则默认
  24. sub(RE,RepStr,str) 替换查找到的第一个子串
  25. gsub(RE,RepStr,str) 替换查找到的所有子串
  26.  
  27. 、以:为分隔符,返回/etc/passwd中每行中每个字段的长度
  28. [root@localhost shell]# cat len.awk
  29. BEGIN{
  30. FS=":"
  31. }
  32. {
  33. i=
  34. while(i<=NF)
  35. {
  36. if (i==NF)
  37. {
  38. printf "%d",length($i)
  39. }
  40. else
  41. {
  42. printf "%d:",length($i)
  43. }
  44. i++
  45. }
  46. print ""
  47. }
  48. [root@localhost shell]# awk -f len.awk passwd
  49. ::::::
  50. ::::::
  51. ::::::
  52. ::::::
  53. ::::::
  54. ...
  55.  
  56. 、搜索字符串"I have a dream"中出现"ea"字符串的位置
  57. [root@localhost shell]# awk 'BEGIN{str="I have a gream";printf "%d\n",index(str,"ea")}'
  58.  
  59. 、将字符串"Hadoop is a bigdata Framework"全部转换为小写
  60. [root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print tolower(str)}'
  61. hadoop is a bigdata framework
  62.  
  63. 、将字符串"Hadoop is a bigdata Framework"全部转换为大写
  64. [root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print toupper(str)}'
  65. HADOOP IS A BIGDATA FRAMEWORK
  66.  
  67. 、将字符串"Hadoop Kafka Spark Storm HDFS YARN Zookeeper",按照空格为分隔符,分隔
  68. [root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr);for (i in arr) print arr[i];}'
  69. Storm
  70. HDFS
  71. YARN
  72. Zookeeper
  73. Hadoop
  74. Kafka
  75. Spark
  76.  
  77. 、搜索字符串"Transaction 2345 Start:Select * from master"第一个数字出现的位置
  78. [root@localhost shell]# awk 'BEGIN{str="Transaction 2345 Start:Select * from master";print match(str,/[0-9]/)}'
  79.  
  80. 、截取字符串"transaction start"的子串,截取条件从第4个字符开始,截取5
  81. [root@localhost shell]# awk 'BEGIN{str="transaction start";print substr(str,4,5)}'
  82. nsact
  83.  
  84. 、替换字符串"Transaction 243 Start,Event ID:9002"中第一个匹配到的数字串替换为$符号
  85. [root@localhost shell]# awk 'BEGIN{str="Transaction 243 Start,Event ID:9002";count=sub(/[0-9]+/,"$",str);print count;print str}'
  86.  
  87. Transaction $ Start,Event ID:
  88. # gsub是替换全部匹配到的数字
  89. [root@localhost shell]# awk 'BEGIN{str="Transaction 243 Start,Event ID:9002";count=gsub(/[0-9]+/,"$",str);print count;print str}'
  90.  
  91. Transaction $ Start,Event ID:$
  92.  
  93. # 在awk中数组下标从1开始
  94. [root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[0]}'
  95.  
  96. [root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[1]}'
  97. Hadoop
  98. [root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");print arr[2]}'
  99. Kafka
  100. [root@localhost shell]# awk 'BEGIN{str="Hadoop Kafka Spark Storm HDFS YARN Zookeeper";split(str,arr," ");for(i in arr) {print arr[i]}}'
  101. Storm
  102. HDFS
  103. YARN
  104. Zookeeper
  105. Hadoop
  106. Kafka
  107. Spark

shell编程系列19--文本处理三剑客之awk中的字符串函数的更多相关文章

  1. shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计

    shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...

  2. shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句

    shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动 ...

  3. shell编程系列14--文本处理三剑客之awk的概述及常用方法总结

    shell编程系列14--文本处理三剑客之awk的概述及常用方法总结 awk是一个文本处理工具,通常用于处理数据并生成结果报告 awk的命名是它的创始人 Alfred Aho.Peter Weinbe ...

  4. shell编程系列20--文本处理三剑客之awk常用选项

    shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...

  5. shell编程系列17--文本处理三剑客之awk动作中的表达式用法

    shell编程系列17--文本处理三剑客之awk动作中的表达式用法 awk动作表达式中的算数运算符 awk动作中的表达式用法总结: 运算符 含义 + 加 - 减 * 乘 / 除 % 模 ^或** 乘方 ...

  6. shell编程系列16--文本处理三剑客之awk模式匹配的两种方法

    shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...

  7. shell编程系列15--文本处理三剑客之awk格式化输出printf

    shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...

  8. shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容

    shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...

  9. shell编程系列12--文本处理三剑客之sed利用sed修改文件内容

    shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...

随机推荐

  1. 如何设置CentOS 7开机自动获取IP地址详解

    本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有i ...

  2. LeetCode - 86、分隔链表

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4-&g ...

  3. java基础(9)---静态方法和成员方法

    一.方法:  方法的区别: 静态方法:有static方法 成员方法:没有static方法 方法的定义:  方法的调用:类.静态方法,对象.成员方法 一个MyClass类包含静态方法和成员方法: 静态方 ...

  4. Dubbo源码分析(4):Protocol

    Protocol接口是Dubbo框架的核心组件.Dubbo框架启动protocol接口实现类,由spring的xml文件配置决定.RegistryProtocol协议是Protocol协议的核心,它负 ...

  5. python递归的最大层数?

    Python的最大递归层数是可以设置的,默认的在window上的最大递归层数是 998. 可以通过sys.setrecursionlimit()进行设置,但是一般默认不会超过3925-3929这个范围 ...

  6. OFDM为什么要在频域内插后做fftshift

     目的:“便于”演算和分析  方法:转换成负频率,得到零中频. 注意:Matlab下标从1开始,数字信号处理下标从0开始,因此以下作图做了转换.

  7. P4357 [CQOI2016]K远点对

    题意:给定平面中的 \(n\) 个点,求第 \(K\) 远的点对之间的距离,\(n\leq 1e5,K\leq min(100,\frac{n\times (n-1)}{2})\) 题解:kd-tre ...

  8. GreenPlum failover,primary和mirror切换实验 -- 重要

    GP failover,primary和mirror切换实验 http://blog.sina.com.cn/s/blog_9869114e0101k1nc.html 一.恢复失败的segment出现 ...

  9. 洛谷P1039侦探推理题解

    #include<cstdio> #include<cstring> #include<string> #include<iostream> using ...

  10. P4555 【[国家集训队]最长双回文串】

    不知道有没有人跟我一样数据结构学傻了 首先这道题是要求回文串,那么我们可以想到manacher算法 但由于\(manacher\)不能求出双回文子串,我们要考虑一些性质 首先对于一个回文串,删掉两边的 ...