Cara yang berbeza untuk menggunakan arahan lajur di linux
- 4751
- 916
- Clarence Powlowski
Adakah anda pernah berada dalam keadaan untuk bekerja dengan fail CSV dan menghasilkan output dalam format jadual berstruktur? Baru -baru ini saya bekerja dengan pembersihan data pada fail yang tidak berada dalam struktur yang betul. Ia mempunyai banyak ruang putih di antara setiap lajur dan saya perlu menukarnya ke format CSV untuk menolak ke pangkalan data. Selepas membersihkan dan menghasilkan output dalam format CSV, output saya tidak menarik secara visual untuk mengesahkan integriti data dalam fail CSV. Ini adalah masa perintah "lajur" berguna bagi saya.
Menurut Manpage, kolum Perintah "Senarai Columnate". Dengan kata -kata mudah, kolum adalah utiliti mudah yang boleh memformat output anda ke dalam kolum Format (baris dan medan) berdasarkan struktur fail sumber anda. The kolum Perintah adalah sebahagian daripada pakej Util-Linux.
Satu perkara penting untuk diperhatikan di sini adalah kolum Perintah berkelakuan berbeza dengan distro berasaskan Debian dan RHEL. Alasannya ialah kegunaan distro berasaskan Debian "kolum"Dari BSDMAINUTILS bukannya Util-Linux. Versi hulu dari kolum arahan lebih baru daripada BSDMAINUTILS pakej. Lihatlah laporan bug untuk mengetahui lebih lanjut mengenai perkara ini.
$ dpkg -s $ (lajur mana)Lajur mana
Untuk tujuan demonstrasi, saya menggunakan Centos 7 dan akan menunjukkan pilihan yang berbeza antara Ubuntu dan Centos 7. Untuk memeriksa kolum versi jalankan arahan berikut. Perintah ini juga akan menunjukkan Util-linux versi pakej.
$ column --version # tidak akan berfungsi di Debian/Ubuntu
Anda juga boleh menyemak versi Util-Linux dengan menjalankan arahan di bawah.
$ rpm -qa | grep -i util -linux # redhat, centos, fedora, amazon linux $ dpkg -l | grep -i util -linux # ubuntu
Sebelum menggunakan kolum memerintahkan tempat yang baik untuk bermula akan menjadi halaman lelaki dan meneroka pilihannya.
Lajur $ Man
Senaraikan kandungan fail dalam format jadual
The kolum perintah boleh membuat jadual dengan lulus nama fail sebagai hujah bersama dengan -t
bendera. saya menggunakan /etc/passwd Sebagai fail input.
$ lajur -t /etc /passwdSenaraikan kandungan fail dalam format jadual
Melihat imej di atas, anda mungkin fikir ini bukan apa yang kita harapkan dan outputnya kelihatan pelik. Ya! Anda betul. Lajur pertimbangkan ruang sebagai pembatas lalai Semasa membuat jadual. Tingkah laku ini dapat ditindih dengan melewati pembatas adat.
Delimeter tersuai
Pembatas tersuai memberi anda pelbagai pilihan untuk bekerja dengan. Untuk membuat penggunaan pembatas tersuai -s
bendera diikuti oleh pemisah. Sekarang kita akan menggunakan ":"
sebagai pemisah untuk berpecah /etc/passwd fail.
$ lajur -s ":" -t /etc /passwdPembatas
Lihat gambar di atas di mana jadual diformat dan berstruktur dengan baik. Dari Util-linux Versi 2.23 pilihan -s
telah diubah tidak tamak.
Sekarang jalankan arahan yang sama di Ubuntu Dan hasilnya akan tamak. Ini adalah kerana kolum perintah (BSDMAINUTILS) pada Ubuntu akan merawat pelbagai perkataan bersebelahan sebagai satu perkataan.
$ lajur -s ":" -t /etc /passwdOutput tamak
Untuk mengatasi penggunaan tingkah laku ini -n
bendera.
$ column -t -s ":" -n/etc/passwd # hanya di debian/ubuntuOutput bukan keburukan
Abaikan garis kosong putih dalam output fail
Apabila anda mempunyai baris kosong dalam fail input anda, arahan lajur secara lalai mengabaikannya. Lihat fail input saya yang ada dalam format CSV dan saya menambah garis kosong antara setiap baris. Sekarang mari kita buat jadual seperti yang kita lakukan sebelum ini dengan fail input ini.
$ column -t -s ";" dummy.txtAbaikan kosong sementara garis
Dari gambar di atas, anda dapat melihat fail input saya dummy.txt mempunyai garis kosong dan ketika saya cuba membuat meja, garis kosong diabaikan.
Catatan: Ini adalah tingkah laku lalai untuk kedua -dua "BSDMAINUTILS/UTIL-LINUX"Variasi kolum perintah. Tetapi kolum (BSDMAINUTILS) mempunyai pilihan untuk mengatasi tingkah laku ini dengan melewati -e
bendera.
$ column -e -t -s "," dummy.TXT # hanya di Debian/UbuntuFail baris putih
Dari imej di atas, anda dapat melihat jadual diformat dengan betul dan garis kosong tidak diabaikan.
Pemisah output fail
Secara lalai, dua ruang putih akan digunakan sebagai pemisah output. Tingkah laku ini dapat ditindih dengan lulus -o
bendera. Anda tidak akan mempunyai pilihan pemisah output yang terdapat di kolum (BSDMAINUTILS).
$ column -t -s "," -o "||" dummy.TXT # hanya di distro berasaskan RHELPemisah output fail
Tukar baris fail menjadi lajur
Menggunakan -x
bendera anda boleh menukar baris ke dalam lajur. Tingkah laku ini sama di kedua -dua RHEL dan Ubuntu Varian arahan lajur. Ini adalah ciri yang sangat berguna apabila anda perlu merebut medan tertentu melalui perintah AWK atau lajur kemudian menukarnya ke tajuk untuk fail CSV anda.
$ column -x fillcols.txtTukar baris fail ke lajur
Semasa anda menjalankan kolum perintah tanpa menggunakan mana -mana bendera tingkah laku akan sama seperti lulus -x
bendera.
Cari saiz lajur
The kolum menggunakan pemboleh ubah persekitaran ($ Lajur)
Untuk mengetahui saiz terminal anda dan berdasarkan saiz Gunakan arahan echo, saiz jadual akan dipaparkan di terminal.
$ echo $ lajur
Lihat gambar di bawah. Pada mulanya, saya mengubah saiz terminal saya $ Lajur
saiz yang ditetapkan ke 60 dan menjalankan arahan lajur. Sekali lagi saya mengubah saiz terminal saya $ Lajur
saiz yang ditetapkan ke 114 dan menjalankan arahan lajur sekali lagi. Anda dapat melihat perbezaan bagaimana lajur mencetak jadual semasa kami mengubah saiz terminal.
$ column -t -s ":" /etc /passwd | kepala 5Saiz semula saiz lajur
Itu sahaja untuk artikel ini. Sekiranya anda mempunyai maklum balas, sila berikannya di bahagian komen.
- « Cara yang berbeza untuk membaca fail dalam skrip bash menggunakan semasa gelung
- Cara Memasang Terraform dalam Pengagihan Linux »