Berbagai cara untuk menggunakan perintah kolom di linux
- 4453
- 528
- Dominick Barton
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 /passwdDaftar 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 /passwdPembatas
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 /passwdOutput serakah
Untuk mengatasi penggunaan perilaku ini -N
bendera.
$ column -t -s ":" -n/etc/passwd # Hanya di debian/ubuntuOutput 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.txtAbaikan 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/ubuntuFile 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 rhelPemisah 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.txtKonversi 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 5Ubah ukuran kolom
Itu untuk artikel ini. Jika Anda memiliki umpan balik, silakan berikan di bagian komentar.
- « Berbagai cara untuk membaca file dalam skrip bash menggunakan saat loop
- Cara menginstal terraform dalam distribusi linux »