Jika input hanya dua kolom, saya akan menyarankan untuk menggunakan column -t
. Ini tidak cukup berfungsi di sini karena column
utilitas 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 column
menggunakan (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, NF
adalah jumlah bidang (kolom), dan $NF
merupakan 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