#For Filename
echo "a.b.c.txt" | rev | cut -d"." -f2- | rev
#For extension
echo "a.b.c.txt" | rev | cut -d"." -f1 | rev
Eu tenho um nome de arquivo como a.b.c.txt
, quero que essa string seja dividida como
string1=a.b.c
string2=txt
Basicamente eu quero dividir o nome do arquivo e sua extensão. Eu usei cut
, mas divide como a,b,c
e txt
. Eu quero cortar a string no último delimitador.
Alguém pode ajudar?
Existem muitas ferramentas para fazer isso.
Como você estava usando 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
Eu teria usado a expansão de parâmetro (se o shell for compatível):
$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
echo "a.b.c.txt" | cut -d. -f1-3
O comando cut
delimitará .
e fornecerá 4 fatores ( a
, b
, c
, txt
). O comando acima imprimirá o fator 1 a 3 (incluído).
Ou:
echo "a.b.c.txt" | cut -d -f-3
O comando acima imprimirá o fator 1 até 3 (incluído).