在最后一个定界符上剪切字符串


14

我有一个类似的文件名a.b.c.txt,我希望将此字符串拆分为

string1=a.b.c
string2=txt

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

有人可以帮忙吗?

Answers:


25
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev

代码之美!
南G VU

15

有很多工具可以做到这一点。

当您使用时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

我会使用参数扩展(如果外壳支持的话):

$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

1
bash解决方案很优雅。
törzsmókus

切割一个不具有固定数量的周期只有工作!
törzsmókus

0
echo "a.b.c.txt" | cut -d. -f1-3

cut命令将划定.并给你4个因素(abctxt)。上面的命令将打印因子1至3(包括)。

要么:

echo "a.b.c.txt" | cut -d -f-3

上面的命令将打印因子1至3(包括在内)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.