一:字符串的截取

假定有定义变量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字符串分割截取和转换总结的更多相关文章

  1. 【Linux】shell字符串分割、数组访问、条件判断

    参考资料: shell字符串分割再循环:http://www.shangxueba.com/jingyan/1633455.html linux shell中 if else以及大于.小于.等于逻辑表 ...

  2. java 字符串的截取、转换、分割

    1.截取 package java07; /* 字符串的截取方法: public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串 public S ...

  3. Linux Bash Shell字符串分割substring等(转)

    原文https://blog.csdn.net/wuyinggui10000/article/details/52779364 脚本开发中遇到的问题是:原java中的字符串分割操作(substring ...

  4. Shell 字符串的截取

    直接上代码了. linux-:/.sh #!/bin/sh STR=HelloWorld echo 'STR == ' $STR :} # == } #结果为World } # Use : ${STR ...

  5. shell字符串的截取

    1.变量 var 从 npos ∈ [0, length-1] 位开始,从左->右截取 num 个字符: ${var:npos:num} / ${var:npos} 小结:若 npos < ...

  6. Shell 字符串分割

    入门级别 入门级别:类似1,2,3,4,5这样的字符串 #!/bin/bash var="1,2,3,4,5" var=${var//,/ } for i in $var; do ...

  7. shell 字符串分割cut

    cut 选项与参数 -d:后面接分隔字符.与-f一起使用. -f:依据-d的分隔字符将一段信息分隔数段,用-f取出第几段的意思. -c:以字符的单位取出固定字符区间 [zhang@localhost ...

  8. 【转】shell字符串截取

    shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...

  9. python字符串的操作(去掉空格strip(),切片,查找,连接join(),分割split(),转换首字母大写, 转换字母大小写...)

    #可变变量:list, 字典#不可变变量:元祖,字符串字符串的操作(去掉空格, 切片, 查找, 连接, 分割, 转换首字母大写, 转换字母大小写, 判断是否是数字字母, 成员运算符(in / not ...

随机推荐

  1. linux详解sudoers

    sudo使用 Linux是多用户多任务的操作系统, 共享该系统的用户往往不只一个.出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限; 如有必要,再来提升权限 ...

  2. ThinkPhp框架开发微信支付——刷卡支付

    首先讲讲我遇到的坑: 1.下载了微信的demo,界面如下,一直调试不通过,原来点击链接地址是微信测试的网页地址...要改成自己开发的网页地址.... 2.demo不是用ThinkPhp框架的,我不懂, ...

  3. 读取properties文件的信息

    1.properties配置文件的信息 fcsimage_path=C://FCSImage 2.Java代码 public final class Config { private static f ...

  4. 44-java断点调式dubug

    转自:https://www.cnblogs.com/mq0036/p/3780538.html Eclipse 的单步调试 1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目 ...

  5. Linux下新建服务

    1 首先在/etc/rc.d/init.d/下添加脚本 asr_cron #!/bin/bash # $Id: rc.redhat.asterisk -- ::43Z tilghman $ # # a ...

  6. openshift上传java web项目

    下载当前客户端 OC(Openshift Client) https://mirror.openshift.com/pub/openshift-v3/clients/3.9.14/windows/oc ...

  7. 多维数组sorted函数的用法

    对某一个位置排列 l=[[1,5,7,9],[5,10,6,11],[4,2,1,4]] newlist=sorted(l,key=lambda iterm : iterm[0],reverse=Tr ...

  8. ajax的基础

    去年也是这个时候,开始学了ajax,也是这个技术领我走上了网页制作的道路,于是这样感觉到手写html比之前的dw拖拖拽拽要有意思得多. 话不多说,下面是一个例子: 这个是ajax显示页面:index. ...

  9. 关于Web应用开发流程的总结

    以下内容为个人工作总结,如果不当,谢谢指出错误. 假设最简单的情况,一个开发人员,开发所有的代码,一个测试人员.一个测试的服务器,一个生产的服务器. 开发人员需要为公司开发一个项目,开发人员首先分析产 ...

  10. 一个机器上运行两个tomcat

    一.   在一台计算机上配置2个tomcat是可以的,关键是tomcat里的server.xml文件中三个端口必须不同.需要修改conf/server.xml使两个tomcat占用的端口不相同,在缺省 ...