Saya ingin mencetak dua file dalam dua kolom — file pertama di sisi kiri dan kedua di sisi kanan.
paste
tidak berfungsi, karena hanya dapat menyisipkan karakter sebagai pembatas, jadi jika baris file pertama memiliki panjang yang berbeda, output akan diputar:
$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line hello
line world
Jika itu adalah perintah untuk menambahkan spasi tambahan seperti fmt --add-spaces --width 50
masalah akan terpecahkan:
$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line hello
line world
Tapi saya tidak tahu cara sederhana untuk melakukan ini.
Jadi bagaimana cara menggabungkan dan mencetak beberapa file secara horizontal tanpa memutar? Sebenarnya, saya hanya ingin melihatnya secara bersamaan.
UPD: perintah untuk menambahkan spasi tambahan memang ada (misalnya, xargs -d 'n' printf '%-50sn'
)
Tapi solusi seperti
$ paste <(add-trailing-spaces file1) file2
tidak berfungsi seperti yang diharapkan ketika file1 memiliki lebih sedikit baris daripada file2.
Jawaban yang Diterima:
Bagaimana dengan paste file{1,2}| column -s $'t' -tn
?
looooooooong line line hello
line world
-
Ini memberitahu
column
untuk menggunakanTab
sebagai pemisah kolom tempat kami mengambilnya daripaste
perintah yang merupakan pemisah default di sana jika tidak ditentukan; umumnya:paste -d'X' file{1,2}| column -s $'X' -tn
dimana
X
berarti setiap karakter tunggal. Anda harus memilih salah satu yang diberikan yang tidak akan muncul di file Anda. -
-t
option digunakan untuk menentukan jumlah kolom yang berisi input. - Ini tidak akan menambahkan tab panjang di antara dua file sementara jawaban lainnya menambahkan.
-
ini akan berfungsi bahkan jika ada baris kosong di file1 dan tidak akan mencetak file kedua di area cetak file1 , lihat di bawah input/output
Masukan file1:
looooooooong line line
Masukan file2:
hello world
Keluaran:
looooooooong line hello world line