Obtener la última parte de la cadena después del guión


10

¿Existe una línea de comando simple para extraer la última parte de una cadena separada por guiones? Por ejemplo, quiero extraer 123de foo-bar-123.

Respuestas:


23

Puede usar la expansión de parámetros de Bash :

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

Si quieres usar otro proceso, con Awk:

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

O, si prefieres Sed:

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

Un proceso externo más ligero, como sugiere Glenn Jackman, es cut:

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

la expansión de parámetros de shell es la mejor respuesta. Una herramienta externa liviana es cut:cut -d- -f3 <<< "$string"
Glenn Jackman

1
@glennjackman - re: cut; de hecho, pero solo si se conoce el número del último campo (ya que la pregunta es un poco ambigua: ¿Hay una línea de comando simple para extraer la última parte ...? )
don_crissti

2
@don_crissti, de hecho. Uno podría hacerlo rev <<< "$string" | cut -d- -f1 | rev, pero luego nos estamos desviando de la simplicidad de la expansión de parámetros.
Glenn Jackman


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.