cut string no último delimitador

7

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?

    
por chhaya vishwakarma 22.07.2015 / 15:27

3 respostas

10
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev
    
por 22.07.2015 / 15:31
11

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
    
por 22.07.2015 / 15:34
0
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).

    
por 13.04.2018 / 12:17

Tags