shell变量的子串应用技术

1.1.1   ${#string} 显示string字符串的长度

eg:

JIMY="I am a young boy"

echo ${#JIMY}

[root@mgp1 ~]# JIMY="I am a young boy"
[root@mgp1 ~]#
[root@mgp1 ~]# echo ${#JIMY}
16

 

 

 

同时:echo $JIMY|wc -m 也可以得到字符个数

1.1.2    ${string:position}

eg:${string:2} 显示string字符串从第2个字符截取,从第三个字符开始到字符结尾的子字符串。

也可以理解为删除前面的多少个字符。

 

1.1.3    ${string:position:length}

从第$position个字符开始取,取$length个字符,不包含第$position个字符值。

eg:

JIMY="I am a young boy"

echo ${JIMY:2:3}

输出结果是:

[root@mgp1 ~]# JIMY="I am a young boy"
[root@mgp1 ~]# echo ${JIMY:2}
am a young boy

[root@mgp1 ~]# echo ${JIMY:2:4}
am a

 

也可以通过 echo $JIMY|cut 3-4  得到相同结果

 

1.1.4   从字符串开头开始删除最短匹配的子字符串

${String#substring} 从String中从开头开始删除最短匹配substring的子串

echo ${JIMY#I am}

 

[root@mgp1 ~]# echo ${JIMY#I am}
a young boy

1.1.5   从字符串中删除最长匹配的子字符串

${string##substring}

 

1.1.6   从字符串结尾开始删除最短匹配的子字符串

${String%substring} 从String中从开头开始删除最短匹配substring的子串

echo ${JIMY%young boy}

只能从结尾开始,不能删除I am字符串

 

[root@mgp1 ~]# echo ${JIMY%boy}
I am a young

1.1.7    替换

${string/substring/replace}  使用$replace 来代替第一个匹配的substring

 

[root@mgp1 ~]# echo $JIMY
I am a young boy
[root@mgp1 ~]# echo ${JIMY/boy/girl}
I am a young girl

 

4.8 ${string/#substring/replace} 如果$string 前缀匹配$substring,就用$repace替换$substring.

 

[root@mgp1 ~]# echo $JIMY
I am a young boy
[root@mgp1 ~]# echo ${JIMY/#I am/You are}
You are a young boy

 

4.9 ${string/%substring/replace}  如果$string 后缀匹配$substring,就用$repace替换$substring.


[root@mgp1 ~]# echo $JIMY
I am a young boy
[root@mgp1 ~]# echo ${JIMY/%boy/girl}
I am a young girl

1.1  修改文件名

rename  [option] expression   replacement  file

举例:

要修改的文件名为 stu_20190909_finished.jpg

将后缀改为html

rename  .jpg  .html  *.jpg

转载于:https://www.cnblogs.com/nanshanjushi/p/11544888.html

### 如何在 Shell 脚本中检查字符串是否包含子串 #### 使用 `if` 和通配符匹配 一种简单的方式是在条件语句中利用双括号结构配合星号作为通配符来检测目标子串是否存在於源字符串之中。这种方式直观易懂,适合初学者使用。 ```bash str="This is my test string search_string" subStr="search_" if [[ ${str} == *"${subStr}"* ]]; then echo "String '${str}' contains substring: '${subStr}'." else echo "String '${str}' does not contain substring: '${subStr}'." fi ``` 此代码片段展示了当 `${str}` 包含 `"${subStr}"` 时会输出相应的提示信息[^2]。 #### 正则表达式匹配 (`=~`) 对于更复杂的模式匹配需求,则可以采用正则表达式的语法来进行验证。这种方法不仅限于简单的子串查找,还可以处理更为复杂的情况,如大小写敏感度控制等特性。 ```bash #!/bin/bash str="aaabbbccc" sub_str="bbb" if [[ ${str} =~ ${sub_str} ]]; then echo "${str} 中包含 ${sub_str}" else echo "${str} 不包含 ${sub_str}" fi ``` 上述例子通过 `=~` 运算符实现了对两个变量间关系的有效评估,并据此作出逻辑分支的选择[^4]。 #### 字符串操作函数法 另外还有一种思路是借助字符串的操作函数完成任务,例如先尝试移除指定部分再对比剩余长度是否有改变;或者直接调用某些工具命令(像 `grep`, `awk` 或者 `sed`),不过这超出了纯 Bash 内置功能范畴,在这里不做深入探讨[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值