Jika input hanya dua kolom, saya akan menyarankan untuk menggunakan column -t. Ini tidak cukup berfungsi di sini karena columnutilitas akan memperlakukan sejumlah spasi atau tab sebagai pembatas kolom:
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"Michael Rod" adalah dua kolom, sehingga satu baris memiliki satu kolom lebih banyak daripada baris lainnya, yang mengacaukan output.
Kita dapat mengatasinya dengan menyisipkan karakter tab sebelum kolom terakhir dan kemudian columnmenggunakan (hanya) itu sebagai pembatas:
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Di Awk, NFadalah jumlah bidang (kolom), dan $NFmerupakan data di bidang terakhir. Skrip yang saya gunakan cukup memodifikasi data dari bidang terakhir dengan menambahkan karakter tab, sebelum mencetak baris lengkap.
Jika shell Anda tidak mengerti $'\t', maka Anda dapat memilih karakter lain yang bukan bagian dari data:
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9