Perintah column Linux: rapikan teks menjadi tabel dengan -t
Perintah column -t dari util-linux merapikan bidang teks menjadi tabel yang mudah dibaca di terminal. Column menghitung lebar kolom dan menambahkan ruang penyelarasan; perintah ini tidak mengurutkan baris atau membuktikan bahwa datanya valid. Gunakan hasilnya untuk tampilan, sambil mempertahankan data sumber untuk pengolahan berikutnya.
Sintaks dan pemeriksaan awal
column [OPSI] [BERKAS...]
OPSI dan BERKAS adalah penanda yang perlu diganti. Tanpa berkas, column membaca masukan standar. Periksa command -v column, column --version, dan column --help untuk mengetahui program dan opsi yang tersedia. Contoh di sini memakai bentuk util-linux; implementasi lain belum tentu menyediakan opsi yang sama.
Bedakan mode tabel dengan mode penyusunan daftar. Opsi -t memecah bidang dan menyelaraskan tabel. Tanpa -t, column menyusun entri daftar ke beberapa kolom; -x mengubah arah pengisian daftar tersebut menjadi per baris. Opsi -x bukan perintah untuk mengurutkan nilai atau menukar susunan bidang tabel.
Siapkan data latihan dan rapikan tabel
Jalankan seluruh blok di Bash atau shell yang mendukung sintaksnya. Mktemp membuat direktori latihan baru. Semua nama dan jalur di passwd.demo.txt adalah data fiktif; contoh ini tidak memerlukan pembacaan daftar akun sistem. Tanda kurung membatasi perpindahan direktori pada subshell sehingga direktori kerja semula tidak berubah.
(
set -eu
labdir=$(mktemp -d)
cd "$labdir"
printf 'PACKAGE VERSION\nalpha 1.0\nlonger-name 2.0\n' > packages.txt
printf 'ana:x:1001:1001:Ana Example:/home/ana:/bin/bash\nbob:x:1002:1002:Bob Example:/home/bob:/bin/sh\n' > passwd.demo.txt
column -t packages.txt
printf 'Lab files: %s\n' "$labdir"
)
Hasil tabel mempunyai kolom PACKAGE dan VERSION, diikuti alpha 1.0 serta longer-name 2.0. Nama paket yang lebih panjang menentukan ruang kolom pertama. Urutan baris tetap seperti masukan; column tidak mengubah versi menjadi urutan numerik.
Setelah blok selesai, lokasi bahan latihan tercetak sesudah Lab files:. Untuk mencoba perintah berikutnya, jalankan cd "/jalur/latihan-yang-dicetak" dengan mengganti penanda jalurnya. Berkas packages.txt dan passwd.demo.txt sudah tersedia di direktori itu. Simpan bahan latihan selama masih diperlukan; bila hendak membersihkannya, pastikan hanya direktori latihan yang dipilih.
Pilih pemisah masukan yang benar
Gunakan -s untuk menentukan karakter pemisah, lalu -t untuk membuat tabel. Contoh berikut memecah tujuh bidang bertanda titik dua pada data fiktif yang disiapkan tadi.
column -s ':' -t passwd.demo.txt
Kolom hasil memuat nama, x, dua nomor, nama lengkap, direktori, dan shell. Spasi dalam Ana Example tetap menjadi bagian bidang nama lengkap karena pemisah yang dipilih adalah titik dua. Jika -s tidak diberikan, pemisahan spasi dapat memecah nama lengkap menjadi bidang terpisah.
Argumen -s diperlakukan sebagai kumpulan karakter pemisah, bukan aturan pengutipan CSV. Pada printf 'a:b,c\n' | column -t -s ':,', titik dua maupun koma memisahkan bidang sehingga a, b, dan c menjadi tiga kolom. Periksa dulu apakah karakter itu dapat muncul sebagai bagian nilai.
Bidang kosong juga penting. Pada util-linux sejak 2.23, printf 'a:b:c\n1::3\n' | column -t -s ':' mempertahankan posisi bidang kedua yang kosong. Angka 3 tetap berada pada kolom c, alih-alih bergeser ke kolom b. Manual column dari proyek util-linux menjelaskan perubahan perilaku ini.
Rapikan keluaran perintah dan periksa hasil
Hubungkan keluaran perintah dengan pipa agar column membacanya dari masukan standar. Contoh pendek berikut sudah menyiapkan semua data masukan sendiri.
printf 'name score\nkim 90\nlee 85\n' | column -t
Hasilnya mempunyai kolom name dan score dengan dua baris data, kim 90 dan lee 85. Contoh berikut memperlihatkan lebih jelas pengaruh panjang nilai pada lebar kolom.
printf 'NAME AGE\nAna 7\nBenjamin 12\n' | column -t
Contoh keluaran; jumlah spasi dapat berbeda menurut implementasi atau pengaturan:
NAME AGE
Ana 7
Benjamin 12
Bandingkan posisi awal AGE, 7, dan 12: semuanya berada pada kolom kedua. Tidak ada baris yang ditukar. Huruf kapital pada judul berasal dari masukan, bukan hasil perubahan otomatis oleh column.
Untuk menyimpan tampilan tanpa mengubah masukan, gunakan column -t packages.txt > packages.table.txt di direktori latihan. Pastikan tujuan belum berisi data penting karena > dapat menimpanya. Jangan mengarahkan keluaran kembali ke packages.txt yang sedang dibaca; shell dapat mengosongkan berkas sebelum column memulai pembacaan.
Opsi yang sering digunakan
| Opsi | Kegunaan |
|---|---|
-t |
Membuat tabel dari bidang masukan. |
-s PEMISAH |
Memilih karakter pemisah bidang masukan. |
-o PEMISAH |
Menetapkan pemisah antarkolom keluaran tabel; penyelarasan masih dapat menambah ruang. |
-c LEBAR |
Menentukan lebar keluaran dalam karakter, sesuai kemampuan mode dan opsi yang dipakai. |
-x |
Mengisi daftar per baris lebih dahulu pada mode penyusunan daftar. |
Misalnya, column -t -o ' | ' packages.txt memakai tanda | di antara kolom. Ini berguna untuk membedakan kolom secara visual, tetapi tidak menjadikannya format pertukaran data dengan aturan escape atau pengutipan.
Lebar terminal dan batas format data
Nilai panjang tidak selalu terpotong otomatis
Lebar terminal, keluaran melalui pipa, versi util-linux, dan opsi tabel dapat memengaruhi tampilan. Menetapkan -c bukan jaminan bahwa semua nilai panjang otomatis dipotong. Util-linux mempunyai opsi tabel seperti --table-wrap dan --table-truncate untuk kebutuhan berbeda; periksa bantuan versi terpasang sebelum mengandalkannya.
Jika tabel tetap terlalu lebar, pilih bidang yang diperlukan, lebarkan terminal, atau gunakan opsi pembungkusan yang sesuai. Menghapus sebagian nilai hanya demi merapikan layar dapat menghilangkan informasi penting. Dukungan warna juga berubah antarversi; jangan menyalin opsi warna dari versi lain tanpa memeriksa --help. Rincian opsi tersedia pada sumber manual column di repositori util-linux.
Tabel sejajar bukan parser CSV
Column tidak memeriksa arti angka, kelengkapan rekaman, atau aturan tanda kutip CSV. Sebagai contoh, printf '"Ana, A",12\n' | column -t -s ',' memecah koma di dalam nama juga. Hasil yang rapi dapat menyembunyikan pemisahan yang keliru.
Jika hasil perlu diproses lagi, simpan masukan terstruktur beserta aturan formatnya, misalnya TSV, CSV, atau JSON yang benar. Pakai parser yang memahami aturan format tersebut. Keluaran dengan spasi penyelarasan sebaiknya menjadi tampilan akhir bagi pembaca, bukan dasar untuk menebak ulang batas bidang.
Jika perintah column tidak ditemukan
Periksa dahulu hasil command -v column dan jalur pencarian perintah pada shell. Nama paket penyedia column bergantung pada distribusi dan rilis. Sebagai contoh, daftar berkas resmi Debian trixie untuk bsdextrautils pada amd64 mencantumkan /usr/bin/column. Jangan menganggap nama paket util-linux selalu cukup pada semua distribusi.
Gunakan informasi paket dari distribusi dan rilis yang benar, pasang melalui pengelola paket bila diperlukan, lalu ulangi pemeriksaan versi dan bantuan. Pemformatan berkas latihan sendiri tidak memerlukan hak administrator.
FAQ
Apakah column -t mengurutkan baris?
Tidak. Column -t menyelaraskan bidang untuk tampilan. Jika perlu mengurutkan data, tentukan kunci pengurutan dan perlakuan terhadap header pada tahap terpisah sebelum memformat hasil.
Apakah -o membuat keluaran aman untuk dibaca skrip?
Tidak dengan sendirinya. Pemisah keluaran tidak menyediakan aturan umum untuk mengutip nilai yang mengandung pemisah, dan ruang penyelarasan dapat tetap muncul. Pertahankan sumber terstruktur dan gunakan parser sesuai formatnya.




