shell_字符串截取

字符串的截取

%号截取,删除右边字符,保留左边字符

%t*表示从右边开始,删除第一个 t及右边的字符

1
2
i="it seems that i fall in love with you"
echo ${i%t*}
1
it seems that i fall in love wi

%%m* 表示从右边开始,删除最后(最左边)一个t及右边的字符

1
2
i="it seems that i fall in love with you"
echo ${i%%t*}
1
i

#号截取,删除左边字符,保留右边字符。

#*t表示从左边开始,删除第一个 t及左边的字符

1
2
i="it seems that i fall in love with you"
echo ${i#*t}
1
seems that i fall in love with you

##*t表示从左边开始删除最后(最右边)一个t及左边的所有字符

1
2
i="it seems that i fall in love with you"
echo ${i##*t}
1
h you

切片截取

从左边第几个字符开始,总字符的个数

从第一个字符开始,总个数为4

1
2
i="it seems that i fall in love with you"
echo ${i:0:4}
1
it s

从左边第几个字符开始,直到结束

从第4个开始,到结束

1
2
i="it seems that i fall in love with you"
echo ${i:4}

从右边第几个开始,总字符个数

从右边第三个开始算起,向右2个字符

1
2
i="it seems that i fall in love with you"
echo ${i:0-3:2}
1
yo

从右边第几个字符开始,直到结束

从右边第三个开始,向右直到结束

1
2
i="it seems that i fall in love with you"
echo ${i:0-3}
1
you

例子:我需要将简书上的文章发布到网站上,我已经下载好了,可是因为有点多,需要每次都手动去一个一个的发布,太麻烦了,所以就想有什么简单的方法可以解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
#used for create hexo file and cat origin file to it
#author NARCISSUS木

cd /home/narcissus/Downloads/compressd-file/jianshu/user-9937522-1556131627/测试
for i in `ls`
do
m=${i%.*}
cd /home/narcissus/Data/HexoBlog
echo $m
hexo n draft $m
if [ $? -eq 0 ];then
cat /home/narcissus/Downloads/compressd-file/jianshu/user-9937522-1556131627/测试/$i >> ./source/_drafts/$i
else
exit
fi
done