shell中截取字符串 今天药忘吃喽~ 2022-08-14 00:53 282阅读 0赞 这里学习了一下shell字符串的操作知识,:选取子串 \#正向截取子串 %逆向截取子串 \#\#正向最长匹配 %%逆向最长匹配。 str="abcdef" expr substr "$str" 1 3 \# 从第一个位置开始取3个字符, abc expr substr "$str" 2 5 \# 从第二个位置开始取5个字符, bcdef expr substr "$str" 4 5 \# 从第四个位置开始取5个字符, def echo $\{str:2\} \# 从第二个位置开始提取字符串, bcdef echo $\{str:2:3\} \# 从第二个位置开始提取3个字符, bcd echo $\{str:(-2)\} \# 从倒数第二个位置向右提取字符串, abcde echo $\{str:(-2):3\} \# 从倒数第二个位置向右提取3个字符, cde str="abbc,def,ghi,abcjkl" echo $\{str\#a\*c\} \# ,def,ghi,abcjkl 一个井号(\#) 表示从左边截取掉最短的匹配 (这里把abbc字串去掉) echo $\{str\#\#a\*c\} \# jkl, 两个井号(\#\#) 表示从左边截取掉最长的匹配 (这里把abbc,def,ghi,abc字串去掉) echo $\{str\#"a\*c"\} \# 空,因为str中没有子串"a\*c" echo $\[str\#\#"a\*c"\} \# 空,同理 echo $\{str\#d\*f) \# abbc,def,ghi,abcjkl, echo $\{str\#\*d\*f\} \# ,ghi,abcjkl echo $\{str%a\*l\} \# abbc,def,ghi 一个百分号(%)表示从右边截取最短的匹配 echo $\{str%%b\*l\} \# a 两个百分号表示(%%)表示从右边截取最长的匹配 echo $\{str%a\*c\} \# abbc,def,ghi,abcjkl \--------------------------- 一个使用的demo for f in `find . -name "*.zip"`;do echo ${f%.*} unzip $f -d ${f%.*} done 通过%.\*将得到的文件名.zip都去掉,将一对的zip文件解压到各自对应的目录下。
还没有评论,来说两句吧...