在最后一个分隔符处剪切字符串

在最后一个分隔符处剪切字符串

我有一个像这样的文件名a.b.c.txt,我希望这个字符串被分割为

string1=a.b.c
string2=txt

基本上我想分割文件名及其扩展名。我用过cut,但它分裂为a,b,ctxt。我想剪切最后一个分隔符上的字符串。

有人可以帮忙吗?

答案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(包括)。

相关内容