tagliare la stringa sull'ultimo delimitatore


14

Ho un nome file come a.b.c.txt, voglio che questa stringa sia divisa come

string1=a.b.c
string2=txt

Fondamentalmente voglio dividere il nome del file e la sua estensione. Ho usato cutma si divide come a,b,ce txt. Voglio tagliare la stringa sull'ultimo delimitatore.

Qualcuno può aiutare?

Risposte:


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

Bellezza del codice!
Nam G VU

15

Ci sono molti strumenti per farlo.

Mentre stavi 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

Avrei usato l'espansione dei parametri (se la shell lo supporta):

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

1
la soluzione bash è elegante.
törzsmókus

il taglio funziona solo con un numero fisso di periodi!
törzsmókus

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

cutcomando delimitare .e vi darà 4 fattori ( a, b, c, txt). Il comando sopra stampa i fattori da 1 a 3 (inclusi).

O:

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

Il comando sopra stampa il fattore 1 fino a 3 (incluso).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.