Ottieni l'ultima parte della stringa dopo il trattino


10

Esiste una semplice riga di comando per estrarre l'ultima parte di una stringa separata da trattini? Ad esempio, voglio estrarre 123da foo-bar-123.

Risposte:


23

Puoi usare l' espansione dei parametri di Bash :

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

Se vuoi usare un altro processo, con Awk:

echo "foo-bar-123" | awk -F- '{print $NF}'

Oppure, se preferisci Sed:

echo "foo-bar-123" | sed 's/.*-//'

Un processo esterno più leggero, come suggerisce Glenn Jackman è cut:

cut -d- -f3 <<< "$string"

l'espansione dei parametri della shell è la risposta migliore. Uno strumento esterno leggero è cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@glennjackman - re: cut; anzi, ma solo se il numero dell'ultimo campo è noto (poiché la domanda è un po 'ambigua: esiste una semplice riga di comando per estrarre l'ultima parte ...? )
don_crissti

2
@don_crissti, davvero. Si potrebbe fare rev <<< "$string" | cut -d- -f1 | rev, ma poi ci stiamo allontanando dalla semplicità di param.expansion.
Glenn Jackman,


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.