Berbagai cara untuk menggunakan perintah kolom di linux

Berbagai cara untuk menggunakan perintah kolom di linux

Pernahkah Anda berada dalam situasi untuk bekerja dengan file CSV dan menghasilkan output dalam format tabular terstruktur? Baru -baru ini saya bekerja dengan pembersihan data pada file yang tidak dalam struktur yang tepat. Ini memiliki begitu banyak putih di antara setiap kolom dan saya harus mengubahnya ke format CSV untuk mendorong ke database. Setelah membersihkan dan membuat output dalam format CSV, output saya tidak menarik secara visual untuk memverifikasi integritas data dalam file CSV. Inilah saat perintah "kolom" berguna bagiku.

Menurut Manpage, kolom memerintah "Daftar kolom". Dengan kata -kata sederhana, kolom adalah utilitas sederhana yang dapat memformat output Anda menjadi a kolom format (baris dan bidang) berdasarkan struktur file sumber Anda. Itu kolom Perintah adalah bagian dari paket util-linux.

Poin penting yang perlu diperhatikan di sini adalah kolom Perintah berperilaku berbeda dalam distro berbasis Debian dan berbasis RHEL. Alasannya adalah penggunaan distro yang berbasis di Debian "kolom" dari BSDMainutils Alih-alih util-linux. Versi hulu dari kolom Perintah lebih baru dari BSDMainutils kemasan. Lihatlah laporan bug untuk mengetahui lebih banyak tentang ini.

$ dpkg -s $ (kolom mana) 
Kolom mana

Untuk tujuan demonstrasi, saya menggunakan Centos 7 dan akan menunjukkan berbagai opsi antara Ubuntu Dan Centos 7. Untuk memeriksa kolom Versi Jalankan perintah berikut. Perintah ini juga akan menampilkan util-linux versi paket.

$ kolom --Version # tidak akan bekerja di Debian/Ubuntu 

Anda juga dapat memeriksa versi util-linux dengan menjalankan perintah di bawah ini.

$ RPM -QA | grep -i util -linux # redhat, centos, fedora, amazon linux $ dpkg -l | grep -i util -linux # ubuntu 

Sebelum menggunakan kolom memerintahkan tempat yang baik untuk memulai adalah halaman manusia dan menjelajahi opsinya.

$ kolom man 

Daftar konten file dalam format tabular

Itu kolom Perintah dapat membuat tabel dengan meneruskan nama file sebagai argumen bersama dengan -T bendera. saya menggunakan /etc/passwd Sebagai file input.

$ kolom -t /etc /passwd 
Daftar konten file dalam format tabel

Melihat gambar di atas, Anda mungkin berpikir ini bukan yang kami harapkan dan outputnya mungkin terlihat aneh. Ya! Kamu benar. Kolom mempertimbangkan ruang sebagai pembatas default Saat membuat tabel. Perilaku ini dapat ditimpa dengan melewati pembatas khusus.

Delimeter Kustom

Pembatas khusus memberi Anda berbagai pilihan untuk bekerja. Untuk membuat pembatas kustom penggunaan -S Bendera diikuti oleh pembatas. Sekarang kami akan menggunakan ":" sebagai pembatas untuk berpisah /etc/passwd mengajukan.

$ kolom -s ":" -t /etc /passwd 
Pembatas

Lihatlah gambar di atas di mana tabel diformat dan terstruktur dengan baik. Dari util-linux Versi 2.23 opsi -S telah diubah menjadi tidak serakah.

Sekarang jalankan perintah yang sama di Ubuntu dan hasilnya akan serakah. hal ini dikarenakan kolom memerintah (BSDMainutils) pada Ubuntu akan memperlakukan beberapa kata yang berdekatan sebagai satu kata.

$ kolom -s ":" -t /etc /passwd 
Output serakah

Untuk mengatasi penggunaan perilaku ini -N bendera.

$ column -t -s ":" -n/etc/passwd # Hanya di debian/ubuntu 
Output non-greedy

Abaikan garis putih kosong dalam output file

Saat Anda memiliki baris kosong di file input Anda, perintah kolom secara default mengabaikannya. Lihat file input saya yang ada dalam format CSV dan saya menambahkan garis kosong di antara setiap baris. Sekarang mari kita buat tabel seperti yang kita lakukan sebelumnya dengan file input ini.

$ kolom -t -s ";" contoh.txt 
Abaikan kosong saat baris

Dari gambar di atas Anda dapat melihat file input saya contoh.txt memiliki garis kosong dan ketika saya mencoba membuat tabel, garis kosong diabaikan.

Catatan: Ini adalah perilaku default untuk kedua “BSDMainutils/util-linuxVarian dari kolom memerintah. Tetapi kolom (BSDMainutils) memiliki opsi untuk mengesampingkan perilaku ini dengan lewat -e bendera.

$ kolom -e -t -s "," Dummy.txt # hanya di debian/ubuntu 
File White Lines

Dari gambar di atas, Anda dapat melihat tabel diformat dengan benar dan garis kosong tidak diabaikan.

Pemisah output file

Secara default, dua ruang putih akan digunakan sebagai pemisah output. Perilaku ini bisa ditimpa dengan lewat -Hai bendera. Anda tidak akan memiliki opsi pemisah output yang tersedia di kolom (BSDMainutils).

$ kolom -t -s "," -o "||" contoh.txt # hanya pada distro berbasis rhel 
Pemisah output file

Konversi baris file menjadi kolom

Menggunakan -X Bendera Anda dapat mengonversi baris menjadi kolom. Perilaku ini sama di kedua RHEL Dan Ubuntu varian perintah kolom. Ini adalah fitur yang sangat berguna ketika Anda harus mengambil bidang tertentu melalui perintah AWK atau kolom kemudian mengonversinya ke header untuk file CSV Anda.

$ kolom -x fillcols.txt 
Konversi baris file ke kolom

Saat Anda menjalankan kolom perintah tanpa menggunakan bendera apa pun, perilaku akan sama dengan lewat -X bendera.

Temukan ukuran kolom

Itu kolom menggunakan variabel lingkungan ($ Kolom) Untuk mengetahui ukuran terminal Anda dan berdasarkan ukurannya, gunakan perintah gema, ukuran tabel akan ditampilkan di terminal.

$ echo $ kolom 

Lihatlah gambar di bawah ini. Awalnya, saya mengubah ukuran terminal saya $ Kolom Ukuran diatur ke 60 dan menjalankan perintah kolom. Sekali lagi saya mengubah ukuran terminal saya $ Kolom Ukuran diatur ke 114 dan menjalankan perintah kolom lagi. Anda dapat melihat perbedaan dalam bagaimana kolom mencetak tabel saat kami mengubah ukuran terminal.

$ kolom -t -s ":" /etc /passwd | Kepala 5 
Ubah ukuran kolom

Itu untuk artikel ini. Jika Anda memiliki umpan balik, silakan berikan di bagian komentar.