shell 进阶之匹配字符串
一,操作字符串
1,字符串长度
expr 命令取字符串函数
自带shell函数读取
2,匹配字符串开头字串的长度
!!!!!!!!!!!!$substring是正则表达式.!!!!!!!!!
expr 格式 expr match "$string" '$substring'
expr "$string" : '$substring'
3,索引
格式
expr index $string $substring
求出第一次出现的位置
4,提取子串
1)格式:${string:position}
第五个字符开始取道最后
2)格式:${string:position:length}
从第五个字符开始取并且只取5个
反着取
上面的情况都不可以的,所以反着取只能这样取
3)格式 expr substr $string $position $length
从某个位置取多长
4)expr match "$string" '\($substring\)' expr "$string" : '\($substring\)'
从什么地方取什么东西
5)expr match "$string" '.*\($substring\)'
从结尾提取匹配的正则字符
5,字符串消除
1)${string#substring}
最短匹配的字符清除
2)${string##substring}
最长的字符消除
3)${string%substring}
结尾的位置截取最短匹配的字符
4)${string%%substring}
从结尾位置截取最长的字符,贪婪匹配
6,字符转替换
1)${string/substring/replacement}
惰性匹配只匹配一次内容并且替换
2)${string//substring/replacement}
全局匹配全部替换
3)${string/#substring/replacement}
如果开头匹配到了的话就只在开头替换
4)${string/%substring/replacement}
如果结尾匹配到了的话就只在结尾替换
5)${!varprefix*}
6)${!varprefix@}
7, 参数替换
1)${parameter-default}
如果变量parameter没被声明, 那么就使用默认值
2)${parameter:-default}
如果变量parameter没被设置, 那么就使用默认值
这两个的区别是什么呢
welcom 并没有被声明,就是没有在命令行或者执行赋值操作
这样的话welcom被声明了但是没有设置值
所以前一个读取的是他的空值,应为已经声明了
后一个声明完了没有设置他的值所以应用whoami的变量
3) ${parameter=default}
如果变量parameter没声明, 那么就把它的值设为default.
这个看起来一样但是仔细想想上一个是应用他的值这个是设置为这个值
同样也有
${parameter:=default} -- 如果变量parameter没设置, 那么就把它的值设为default.
4)${parameter+alt_value}, ${parameter:+alt_value}
-
${parameter:+alt_value} -- 如果变量parameter被设置了, 那么就使用alt_value, 否则就使用null字符串.
${parameter+alt_value} -- 如果变量parameter被声明了, 那么就使用alt_value, 否则就使用null字符串.
如果设置了值的话就用后面的值,没有设置就用空值
5)${parameter?err_msg}, ${parameter:?err_msg}
${parameter?err_msg} -- 如果parameter已经被声明, 那么就使用设置的值, 否则打印err_msg错误消息.
${parameter:?err_msg} -- 如果parameter已经被设置, 那么就使用设置的值, 否则打印err_msg错误消息.
shell 进阶之匹配字符串的更多相关文章
- shell 删除除匹配字符串之外的所有文件夹
file_dir=` -maxdepth - type d`for dir in $file_dirdo file_name=`basename $dir` if [ $file_name != &q ...
- shell grep正则匹配汉字
Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...
- shell 中 贪婪匹配 和 非贪婪匹配
举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...
- shell 中获取子字符串的正确姿势
前言 shell 取子串的方式有点特别,你写的匹配字符串是需要从头开始匹配的,第一个匹配到了才开始匹配下一个,这个类似于python中的match的工作方式. 1,获取子串有两种方式 使用字符串匹配的 ...
- 自学linux——12.shell进阶
Shell进阶 当把在Windows中写好的脚本传到linux中使用时,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以会多出来\r,在linux中运行脚本时,需执行: sed - ...
- 解决java switch……case不能匹配字符串的问题
java1.7已经支持了匹配字符串 方案1. enum Animal { dog,cat,bear; public static Animal getAnimal(String animal){ re ...
- 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签
问题描述:最近在搭建一个开源平台网站,在做一个简单搜索的功能,需要将搜索到的结果中被匹配的字符串添加不一样的颜色,但是又不破坏被匹配的字符串. 使用的方法是替换被匹配的字符串加上font标签.但是搜索 ...
- Shell case正则匹配法
Shell case正则匹配法 case $BOOLEAN in [yY][eE][sS]) echo 'Thanks' $BOOLEAN ;; [yY]|[nN]) echo 'Thanks' ...
- JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)
JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...
随机推荐
- shell 字符串中定位字符位置 获取字符位置
linux shell 字符串操作(长度,查找,替换)详解 该博文中描述的如下两个字符串操作, ${string:position} #在$string中, 从位置$position开始提取子串 ${ ...
- js Date 生成某年某月的天数
$(function () { //构造一个日期对象: var day = new Date(2014, 2, 0); //获取天数: var daycount = day.getDate(); al ...
- C#验证身份证号码正确性
18位号码: private static bool CheckIDCard18(string Id) { ; ), , ) || '), out n) == false) { return fals ...
- C#ADO.NET基础二
DataAdapter的使用,批量增删改 1.使用DataAdapter查询 private void Select2() { try { using (SQLiteConnection conn = ...
- conda install 安装太慢怎么办?
小编我在安装tensorflow和keras的过程中,安装进程太慢,小木棍一直在转圈...抓狂... 如何解决??? 使用清华提供的anaconda镜像,使用以后真的很快! Anaconda 镜像使用 ...
- Python实现——决策树(部分函数/连续数据)
由于上一例的实现中只针对了离散数据,为了扩充处理范围,我实现了一下对线性数据的简单处理,在其中我选择用中位数作为指标,平均数.众数等等其他数据在我看来异曲同工,最终也都会有较相似的结构. 求连续数据的 ...
- css3中的自定义字体
自定义字体 /*定义*/ @font-face { font-family: "icons"; src: url("icomoon.eot"); src: lo ...
- 一、pytest的介绍和安装
需要针对一个项目系统开发一套UI自动化测试脚本,自己结合着学习,采用了pytest去实现,这里留下记录. 什么是pytest pytest 是一个非常成熟的全功能的Python测试框架 可以胜任uni ...
- html基础知识,整理
# HMTL 基础知识 ###查看网页源代码吗 ``` ctrl + u``` ###dom元素 一个标签即代表一个dom元素 ###dom元素属性 ``` <p id ="first ...
- (原創) Gvim 個人習慣常用設定 (vim)
不定期更新這篇,因為查詢到好用的設定或者插件就會更新自己的設定. "set nocompatible let $LANG='zh_TW.UTF-8' set langmenu=zh_tw.u ...