Saya memiliki file dengan dua kolom seperti yang ditunjukkan di bawah ini (contoh):
FILE 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Saya perlu memformat ini dan output yang saya harapkan adalah:
FILE 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Michael Rod 3
adalah 2 kolom dan bukan 3?Jawaban:
Jika input hanya dua kolom, saya akan menyarankan untuk menggunakan
column -t
. Ini tidak cukup berfungsi di sini karenacolumn
utilitas akan memperlakukan sejumlah spasi atau tab sebagai pembatas kolom:"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: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:sumber