Tengo una cadena separada por espacios que se emite mediante un comando, que me gusta canalizar cut, usando -fd ' 'para dividir en espacios. Sé que puedo usar -f <n>para mostrar el número de campo <n>, pero ¿puedo hacer que muestre el último campo si no sé la longitud de la cadena?
¿O necesito usar una herramienta de edición de texto más flexible como sedo awk?
command-line
cut-command
Arronico
fuente
fuente

-nconvierte en n desde el principio,n-es desde n hasta el final, y existe la--complementopción que invierte la selección. Pero no hay manera de contar el número de campos y actuar sobre él hasta donde puedo decir.Respuestas:
No
cut, no puedo hacer eso. Podrías usar dosrevcomandos, comopero generalmente es más fácil de usar
awk:fuente
Puede hacer esto usando solo shell, no se necesita ninguna herramienta externa, usando la expansión de parámetros:
var##*descartará todo, desde el inicio hasta el último espacio del parámetro (variable)var.Si el delimitador puede ser cualquier espacio en blanco, por ejemplo, espacio o tabulación, use la clase de caracteres
[:blank:]:Ejemplo:
fuente
Personalmente, me gusta la respuesta de Florian Diesch. Pero hay de esta manera también.
Explicación:
wc -wda la cantidad de palabras. ycutcorta la última palabraEDITAR:
Pensé en otra forma de hacerlo:
fuente
a="my string here", también podría usar la expansión de parámetros${a##* }.Aquí hay uno usando
grepCómo funciona:
-oImprimir solo las partes coincidentes (no vacías) de una línea coincidente.[^ ]*$coincide con cualquier cosa desde el final hasta que encuentra un espacio.Otro trazador de líneas de Glenn Jackman usando Perl
fuente