Si la entrada hubiera sido solo dos columnas, habría sugerido usar column -t
. Sin embargo, esto no funciona aquí, ya que la column
utilidad tratará cualquier número de espacios o pestañas como delimitadores de columna:
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"Michael Rod" tiene dos columnas, de modo que una sola fila tiene una columna más que las otras filas, lo que desordena la salida.
Podemos solucionar esto insertando un carácter de tabulación antes de la última columna y luego dejemos column
usar (solo) eso como delimitador:
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
En Awk, NF
es el número de campos (columnas) y $NF
son los datos en el último campo. El script que estoy usando simplemente modifica los datos del último campo al anteponer un carácter de tabulación, antes de imprimir la línea completa.
Si su shell no comprende $'\t'
, puede elegir otro personaje que no sea parte de los datos:
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9