Misalnya saya punya file (diproduksi dengan echo -e "var1\tvar2\t\var3\tvar4" > foo
) yang di-output sebagai:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Saya lebih suka output seperti ini (di sini saya menggunakan vim
dan :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Saya bisa mendapatkan fungsionalitas yang sama dengan cat
jika saya gunakan $ tabs=15
di bash (lihat pertanyaan ini ). Apakah ada program yang melakukan pemformatan seperti ini secara otomatis? Saya tidak ingin bereksperimen dengan tabs
nilai sebelum cat
memasukkan file.
shell
command-line
cat
columns
Sebastian
sumber
sumber
-s $'\t'
(tidak ditemukan di setiap implementasi kolom) kalau-kalau beberapa bidang berisi spasi.$'\t'
berarti karakter tab. Baris baru$'\n'
dan seterusnya.column -ts: /etc/passwd
. Terlihat keren!-n
, yaitu menghindari penggabungan beberapa pembatas yang berdekatanBeberapa pilihan:
kolom adalah perintah non-standar, beberapa implementasi / versi tidak mendukung opsi -s. Itu menghitung lebar kolom berdasarkan input, tetapi itu berarti bahwa itu hanya dapat mulai menampilkan setelah semua input diumpankan ke dalamnya.
$'...'
adalah sintaks ksh93 juga ditemukan di zsh dan bash.Dengan zsh:
sumber
Anda juga dapat menggunakan
rs
sebagai alternatif untukcolumn -t
:-c
mengubah pemisah kolom input, tetapi-c
sendiri yang mengatur pemisah kolom input ke sebuah tab.-z
mengatur lebar setiap kolom dengan lebar entri kolom terpanjang alih-alih membuat semua kolom sama lebar. Jika beberapa baris memiliki kolom lebih sedikit daripada baris pertama, tambahkan-n
.sumber
rs
itu? Saya belum menginstal perintah itu pada CentOS saya atau sistem Ubuntu / Mint saya.rs
, sehingga Anda dapat menginstalnya denganapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? Saya tidak tahu bagaimana saya akan menggunakannya dengan file csvAlat lain yang dapat melakukan ini adalah
tsv-pretty
dari TSV Utilities eBay (disclaimer: I'm the author). Dibutuhkan langkah tambahan berbaris bidang numerik pada titik desimal. Sebagai contoh:Ada beberapa opsi pemformatan. Misalnya,
-u
garis bawahi tajuk dan-f
format float di bidang yang serupa untuk dibaca:Info lebih lanjut tersedia di referensi tsv-pretty .
sumber
Pertanyaannya adalah tentang mengeluarkan kolom yang dibatasi tab.
Jadi jawaban yang benar adalah adaptasi kecil dari jawaban @nisetama. Saya menambahkan opsi -C $ '\ t' yang menetapkan pemformatan output.
Kudo to @nisetama :)
sumber
DERET SAMPEL
REF LIB di: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
sumber
sed
sedang digunakan.