shell字符串分割截取和转换总结
一:字符串的截取
假定有定义变量VAR=mm/aa/bb/dd
1.获取字符串长度:echo "${#VAR}",即输出11;
2.非贪婪模式删除左边的,保留右边的:echo "${VAR#*/}",输出aa/bb/dd;这里的贪婪模式和正则表达式的类似,即*/以非贪婪模式从左往右匹配,将匹配到的字符均删除然后返回剩余的;
3.贪婪模式删除左侧匹配,返回右侧剩余:echo "${VAR##*/}",输出dd;这里*会一直往右匹配,然后删除最后匹配到的返回dd;
4.非贪婪模式删除右侧匹配,保留左侧:echo "${VAR%/*}",输出mm/aa/bb;
5.贪婪模式删除右侧匹配,保留左侧:echo "${VAR%%/*}",输出mm;
注:如果是要截取函数的参数,则将VAR换成对应的参数的下标即可,如${1#*=}
还有一些截取固定长度的,目前对个人不是很有用,等用到了再总结;
二:数组的定义及将字符串转换为数组
arr=(a b c) # 此时arr就是一个数组,arr[0]为a,但是表示这个数组不能直接用arr而是$(arr[*])或$(arr[@]);
看一段shell输出:
- arr=(a b cc dd "uuu mm");
- echo ${arr[]} # 输出:a
- echo ${arr[((${#arr[*]}-))]} # 输出:uuu mm,这里解释一下${#arr[*]}和${#arr[@]}是一样的即获取arr数组的length,然后通过(())对此length-1获取最后一个元素的下标,然后${arr[length-1]}获取最后一个元素即uuu mm
- echo ${#arr[]} # 输出第5个元素的长度,注意这个不是数组的length,而是元素(字符串)的length,输出:6
- arr[]=mmmd # 对数组的第一个元素进行重新赋值
- echo ${arr[]} # 输出此元素的最新值mmmd
- for arg in ${arr[@]}; do # ${arr[@]}和${arr[*]}都是获取arr的所有元素(即其它语言里的数组,shell里获取数组本身不像其它语言一样直接用数组名即可,这里是${arr[*]}的格式
- echo $arg
- done
将字符串转换为数组(这里顺便提一下"$*"和"$@"当它们没有被""包裹时是没区别的,而用""引起来后前者则将所有参数变成了一个字符串参数,后者则是一个数组)
string="hello,shell,haha"(后面可以有;)
array=(${string//,/ })
可以这么理解,//,/ 就是将,替换成空格(还可以如//t/b将t转换为b);如果string="aa bb ccc"那么其实可以直接array=($string)就能将字符串转换为数组;
通过
- mmms="helltssktll"
- nestr=${mmms//t/K}
- echo ${nestr} # 这里输出hellKsskKll也说明${str//m/n}其实就是将str里的m换成n得到新的字符串
还有一种$IFS的,个人感觉没这种清爽,就不介绍了;
shell字符串分割截取和转换总结的更多相关文章
- 【Linux】shell字符串分割、数组访问、条件判断
参考资料: shell字符串分割再循环:http://www.shangxueba.com/jingyan/1633455.html linux shell中 if else以及大于.小于.等于逻辑表 ...
- java 字符串的截取、转换、分割
1.截取 package java07; /* 字符串的截取方法: public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串 public S ...
- Linux Bash Shell字符串分割substring等(转)
原文https://blog.csdn.net/wuyinggui10000/article/details/52779364 脚本开发中遇到的问题是:原java中的字符串分割操作(substring ...
- Shell 字符串的截取
直接上代码了. linux-:/.sh #!/bin/sh STR=HelloWorld echo 'STR == ' $STR :} # == } #结果为World } # Use : ${STR ...
- shell字符串的截取
1.变量 var 从 npos ∈ [0, length-1] 位开始,从左->右截取 num 个字符: ${var:npos:num} / ${var:npos} 小结:若 npos < ...
- Shell 字符串分割
入门级别 入门级别:类似1,2,3,4,5这样的字符串 #!/bin/bash var="1,2,3,4,5" var=${var//,/ } for i in $var; do ...
- shell 字符串分割cut
cut 选项与参数 -d:后面接分隔字符.与-f一起使用. -f:依据-d的分隔字符将一段信息分隔数段,用-f取出第几段的意思. -c:以字符的单位取出固定字符区间 [zhang@localhost ...
- 【转】shell字符串截取
shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...
- python字符串的操作(去掉空格strip(),切片,查找,连接join(),分割split(),转换首字母大写, 转换字母大小写...)
#可变变量:list, 字典#不可变变量:元祖,字符串字符串的操作(去掉空格, 切片, 查找, 连接, 分割, 转换首字母大写, 转换字母大小写, 判断是否是数字字母, 成员运算符(in / not ...
随机推荐
- Properties 使用
Properties 属于Map 下HashTable的小弟 属于持久的属性集,他可以保存在流中或者在流中加载. 键和值都是字符串类型. 通常用于配置文件 方法介绍: 存放键值对:setPropert ...
- SCP对拷如何连接指定端口远程主机
SCP对拷如何连接指定端口(非22端口)的远程主机 scp -P 远程端口号 本机待拷贝文件路径 远程主机用户名@远程主机地址:远程主机目的路径 注意: 1. 参数-P 的位置一定要紧跟在s ...
- C语言常用关键字及运算符操作
1.关键字 (1)数据类型 char 1字节,8bit==256 int long,short unsgined ,signed 无符号为 ...
- Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍
Pycharm使⽤用秘笈v0.3PyCharm使⽤用秘籍 1. PyCharm的基本使⽤用 在PyCharm下为你的Python项⽬目配置Python解释器器 1. Project:当前项⽬目名> ...
- thinkphp装修平台源码
每日签到微擎微赞自助授权中心站长工具(new)☜=每日新帖=微信开发手册VIP优惠活动 开启辅助访问切换到宽版 用户名 自动登录 找回密码 密码 登录 立即注册 只需一步,快速开始 首页 微鱼商业 ...
- 自适应手机网站meta name代码
<meta name="viewport" content="width=device-width,initial-scale=1.0"> co ...
- poj 2528(线段树+离散化) 市长的海报
http://poj.org/problem?id=2528 题目大意是市长竞选要贴海报,给出墙的长度和依次张贴的海报的长度区间(参考题目给的图),问最后你能看见的海报有几张 就是有的先贴的海报可能会 ...
- instanceof 和 typeof
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链 function Person(){ Person.prototype.dan ...
- linux 使用笔记1
Zox's code life 人生就是不停的战斗! xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到 ...
- spring colud 博客
https://blog.csdn.net/forezp/article/details/70148833