Saya punya dua variabel yang berisi informasi multiline dan saya ingin mem-kolomnya.
varA
kembali
Aug 01
Aug 04
Aug 16
Aug 26
dan varB
kembali
04:25
07:28
03:39
10:06
jika saya mencetak kedua variabel, itu kembali
Aug01
Aug04
Aug16
Aug26
04:25
07:28
03:39
10:06
Yang ingin saya lakukan adalah sebagai berikut:
Aug01 04:25
Aug04 07:28
Aug16 03:39
Aug26 10:06
Saya baru di Linux dan saya akan sangat menghargai beberapa saran, terima kasih.
command-line
bash
text-processing
BNairb
sumber
sumber
Jawaban:
Meet
paste
, bagian dari utilitas inti GNU yang sudah diinstal :paste
mengambil file dan bukan variabel sebagai input, jadi saya menggunakanbash
Proses Pergantian dan hanya mencetak konten variabel denganprintf
. Pembatas default antara kolom adalahTAB
, Anda dapat mengubahnya dengan-d
opsi, misalnyapaste -d" "
untuk karakter spasi tunggal. Untuk mempelajari lebih lanjut tentangpaste
lihat manual online atau jalankaninfo '(coreutils) paste invocation'
.sumber
Jika Anda hanya ingin hanya menampilkan variabel teks berdampingan, @dessert memiliki solusi paling sederhana (terbaik?) Menggunakan
print
. Namun jika Anda ingin dapat memanipulasi masing-masing bagian secara terpisah, Anda dapat dengan mudah mengubah vars menjadi array, dan mengulanginya.sumber
Jika Anda ingin menghindari utilitas eksternal dan melakukannya secara asli di shell, Anda dapat menggunakan
read
dengan deskriptor file terpisah / di sini string untuk setiap variabel:Meskipun sering dianggap praktik yang buruk untuk menggunakan shell untuk pemrosesan teks, itu bisa dimaafkan jika Anda sudah memiliki data dalam variabel shell.
sumber
Anda dapat melakukan ini dengan alat POSIX
pr
:Hasil:
Atau untuk satu tab:
Atau untuk ruang tunggal:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html
Atau dengan
column
dariutil-linux
paket:sumber