Cómo encontrar el último campo usando 'cortar'
Sin usar sed
o awk
, solo cut
, ¿cómo obtengo el último campo cuando el número de campos se desconoce o cambia con cada línea?
Aceptado
Podrías probar algo como esto:
echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev
Explicación
rev
invierte "maps.google.com" para que seamoc.elgoog.spam
cut
utiliza un punto (es decir, '.') como delimitador y elige el primer campo, que esmoc
- Por último, lo invertimos nuevamente para obtener
com
Utilice una expansión de parámetros. Esto es mucho más eficiente que cualquier tipo de comando externo cut
(o grep
) incluido.
data=foo,bar,baz,qux
last=${data##*,}
Consulte BashFAQ #100 para obtener una introducción a la manipulación de cadenas nativas en bash.