shell编程系列19--文本处理三剑客之awk中的字符串函数
- 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) 替换查找到的所有子串
- 、以:为分隔符,返回/etc/passwd中每行中每个字段的长度
- [root@localhost shell]# cat len.awk
- BEGIN{
- FS=":"
- }
- {
- i=
- 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
- ::::::
- ::::::
- ::::::
- ::::::
- ::::::
- ...
- 、搜索字符串"I have a dream"中出现"ea"字符串的位置
- [root@localhost shell]# awk 'BEGIN{str="I have a gream";printf "%d\n",index(str,"ea")}'
- 、将字符串"Hadoop is a bigdata Framework"全部转换为小写
- [root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print tolower(str)}'
- hadoop is a bigdata framework
- 、将字符串"Hadoop is a bigdata Framework"全部转换为大写
- [root@localhost shell]# awk 'BEGIN{str="Hadoop is a bigdata Framework";print toupper(str)}'
- HADOOP IS A BIGDATA FRAMEWORK
- 、将字符串"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];}'
- Storm
- HDFS
- YARN
- Zookeeper
- Hadoop
- Kafka
- Spark
- 、搜索字符串"Transaction 2345 Start:Select * from master"第一个数字出现的位置
- [root@localhost shell]# awk 'BEGIN{str="Transaction 2345 Start:Select * from master";print match(str,/[0-9]/)}'
- 、截取字符串"transaction start"的子串,截取条件从第4个字符开始,截取5位
- [root@localhost shell]# awk 'BEGIN{str="transaction start";print substr(str,4,5)}'
- nsact
- 、替换字符串"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}'
- Transaction $ Start,Event ID:
- # gsub是替换全部匹配到的数字
- [root@localhost shell]# awk 'BEGIN{str="Transaction 243 Start,Event ID:9002";count=gsub(/[0-9]+/,"$",str);print count;print str}'
- Transaction $ 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]}}'
- Storm
- HDFS
- YARN
- Zookeeper
- Hadoop
- Kafka
- Spark
shell编程系列19--文本处理三剑客之awk中的字符串函数的更多相关文章
- shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计
shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...
- shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动 ...
- shell编程系列14--文本处理三剑客之awk的概述及常用方法总结
shell编程系列14--文本处理三剑客之awk的概述及常用方法总结 awk是一个文本处理工具,通常用于处理数据并生成结果报告 awk的命名是它的创始人 Alfred Aho.Peter Weinbe ...
- shell编程系列20--文本处理三剑客之awk常用选项
shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...
- shell编程系列17--文本处理三剑客之awk动作中的表达式用法
shell编程系列17--文本处理三剑客之awk动作中的表达式用法 awk动作表达式中的算数运算符 awk动作中的表达式用法总结: 运算符 含义 + 加 - 减 * 乘 / 除 % 模 ^或** 乘方 ...
- shell编程系列16--文本处理三剑客之awk模式匹配的两种方法
shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...
- shell编程系列15--文本处理三剑客之awk格式化输出printf
shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...
- shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容
shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...
- shell编程系列12--文本处理三剑客之sed利用sed修改文件内容
shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...
随机推荐
- 如何设置CentOS 7开机自动获取IP地址详解
本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有i ...
- LeetCode - 86、分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4-&g ...
- java基础(9)---静态方法和成员方法
一.方法: 方法的区别: 静态方法:有static方法 成员方法:没有static方法 方法的定义: 方法的调用:类.静态方法,对象.成员方法 一个MyClass类包含静态方法和成员方法: 静态方 ...
- Dubbo源码分析(4):Protocol
Protocol接口是Dubbo框架的核心组件.Dubbo框架启动protocol接口实现类,由spring的xml文件配置决定.RegistryProtocol协议是Protocol协议的核心,它负 ...
- python递归的最大层数?
Python的最大递归层数是可以设置的,默认的在window上的最大递归层数是 998. 可以通过sys.setrecursionlimit()进行设置,但是一般默认不会超过3925-3929这个范围 ...
- OFDM为什么要在频域内插后做fftshift
目的:“便于”演算和分析 方法:转换成负频率,得到零中频. 注意:Matlab下标从1开始,数字信号处理下标从0开始,因此以下作图做了转换.
- P4357 [CQOI2016]K远点对
题意:给定平面中的 \(n\) 个点,求第 \(K\) 远的点对之间的距离,\(n\leq 1e5,K\leq min(100,\frac{n\times (n-1)}{2})\) 题解:kd-tre ...
- GreenPlum failover,primary和mirror切换实验 -- 重要
GP failover,primary和mirror切换实验 http://blog.sina.com.cn/s/blog_9869114e0101k1nc.html 一.恢复失败的segment出现 ...
- 洛谷P1039侦探推理题解
#include<cstdio> #include<cstring> #include<string> #include<iostream> using ...
- P4555 【[国家集训队]最长双回文串】
不知道有没有人跟我一样数据结构学傻了 首先这道题是要求回文串,那么我们可以想到manacher算法 但由于\(manacher\)不能求出双回文子串,我们要考虑一些性质 首先对于一个回文串,删掉两边的 ...