Cara yang berbeza untuk menggunakan arahan lajur di linux

Cara yang berbeza untuk menggunakan arahan lajur di linux

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 /passwd 
Senaraikan 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 /passwd 
Pembatas

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 /passwd 
Output tamak

Untuk mengatasi penggunaan tingkah laku ini -n bendera.

$ column -t -s ":" -n/etc/passwd # hanya di debian/ubuntu 
Output 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.txt 
Abaikan 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/Ubuntu 
Fail 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 RHEL 
Pemisah 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.txt 
Tukar 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 5 
Saiz semula saiz lajur

Itu sahaja untuk artikel ini. Sekiranya anda mempunyai maklum balas, sila berikannya di bahagian komen.