![在最后一个分隔符处剪切字符串](https://linux22.com/image/69546/%E5%9C%A8%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%88%86%E9%9A%94%E7%AC%A6%E5%A4%84%E5%89%AA%E5%88%87%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我有一个像这样的文件名a.b.c.txt
,我希望这个字符串被分割为
string1=a.b.c
string2=txt
基本上我想分割文件名及其扩展名。我用过cut
,但它分裂为a,b,c
和txt
。我想剪切最后一个分隔符上的字符串。
有人可以帮忙吗?
答案1
#For Filename
echo "a.b.c.txt" | rev | cut -d"." -f2- | rev
#For extension
echo "a.b.c.txt" | rev | cut -d"." -f1 | rev
答案2
有很多工具可以做到这一点。
正如您所使用的cut
:
$ string1="$(cut -d. -f1-3 <<<'a.b.c.txt')"
$ string2="$(cut -d. -f4 <<<'a.b.c.txt')"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
我会使用参数扩展(如果 shell 支持):
$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
答案3
echo "a.b.c.txt" | cut -d. -f1-3
cut
命令将分隔.
并给出 4 个因子 ( a
, b
, c
, txt
)。上面的命令将打印因子 1 到 3(包含在内)。
或者:
echo "a.b.c.txt" | cut -d -f-3
上面的命令将打印因子 1 到 3(包括)。