shell脚本中字符串截取问题

#和%在shell中的应用

【#和$匹配规则】

【原文参考】https://blog.csdn.net/hongchangfirst/article/details/28436947?utm_source=blogxgwz4

https://www.cnblogs.com/kevingrace/p/8868262.html

【规则】

(1)${string#*/} # 在字符串string中从左往右匹配到第一个“/”时,打印这个斜杠后面的内容;

(2)${string%/*} # 在字符串string中从右往左匹配到第一个“/”时,打印这个斜杠前面的内容;

【实例1】#和%使用演示

#! /bin/bash

files=`find -name 2020092715_vpn_client.config`

for i in $files

do

echo "{i#*/}:" ${i#*/}

echo "{i%/*}:" ${i%/*}

done

运行结果:

{i#*/}: Downloads/vpnclient/backup.vpn_client.config/2020092715_vpn_client.config

{i%/*}: ./Downloads/vpnclient/backup.vpn_client.config

i字符串:

./Downloads/vpnclient/backup.vpn_client.config/2020092715_vpn_client.config

 

【实例2】批量删除文件最后一个字符串

#! /bin/bash

for i in $(cat path1.txt)

do

echo ${i%/*} >> path2.txt # 注意{}里面调用变量i的时候没有加$

done

 

【拓展】

${varible##*string} 从左向右截取最后一个string后的字符串

${varible#*string} 从左向右截取第一个string后的字符串

${varible%%string*} 从右向左截取最后一个string后的字符串

${varible%string*} 从右向左截取第一个string后的字符串

 

【实例3】echo命令实现字符串切片

【原文参考】https://www.cnblogs.com/cangqinglang/p/11952838.html

【备注】echo ${字符串:开始的位置:截取多少个字符}

修改大写为小写

【备注】只是显示变了

【实例4】统计字符串的长度

name=Alex

echo ${#name}

posted @ 2021-05-18 16:41  冯诺依曼  阅读(260)  评论(0编辑  收藏  举报