Saya memiliki dua file paralel dengan jumlah baris yang sama dalam dua bahasa dan berencana untuk menggabungkan kedua file ini baris demi baris dengan pembatas |||
. Misalnya, kedua file tersebut adalah sebagai berikut:
Berkas A:
1Mo 1,1 I love you.
1Mo 1,2 I like you.
Hi 1,3 I am hungry.
Hi 1,4 I am foolish.
Berkas B:
1Mo 1,1 Ich liebe dich.
1Mo 1,2 Ich mag dich.
Hi 1,3 Ich habe Durst.
Hi 1,4 Ich bin neu.
Output yang diharapkan adalah seperti ini:
1Mo 1,1 I love you. ||| 1Mo 1,1 Ich liebe dich.
1Mo 1,2 I like you. ||| 1Mo 1,2 Ich mag dich.
Hi 1,3 I am hungry. ||| Hi 1,3 Ich habe Durst.
Hi 1,4 I am foolish. ||| Hi 1,4 Ich bin neu.
Saya mencoba paste
perintah seperti:
paste -d "|||" fileA fileB
Tetapi output yang dikembalikan hanya berisi satu pipa seperti:
1Mo 1,1 I love you. |1Mo 1,1 Ich liebe dich.
1Mo 1,2 I like you. |1Mo 1,2 Ich mag dich.
Apakah ada cara untuk memisahkan setiap pasang garis dengan pipa babat |||
?
Jawaban yang Diterima:
Dengan tempel POSIX:
:|paste -d ' ||| ' fileA - - - - fileB
paste
akan menggabungkan baris yang sesuai dari semua file input. Di sini kita memiliki enam file, fileA
, empat file dummy dari standar di -
, dan fileB
.
Daftar pembatas termasuk spasi, tiga pipa dan spasi dalam urutan itu akan digunakan oleh paste
melingkar.
Untuk baris pertama dari enam file, fileA
akan digabungkan dengan file dummy pertama (yang bukan apa-apa, terima kasih kepada operator no-op :), menghasilkan line1-fileA<space>
.
File dummy pertama akan digabungkan dengan yang kedua dengan pipa, menghasilkan line1-fileA |
, kemudian file dummy kedua dengan file dummy ketiga, menghasilkan line1-fileA ||
, file dummy ketiga dengan file dummy keempat, menghasilkan line1-fileA |||
.
Dan file dummy keempat dengan fileB
, menghasilkan line1-fileA ||| line1-fileB
.
Langkah tersebut akan diulang untuk semua lini, memberikan hasil yang diharapkan.
Penggunaan :|
adalah untuk lebih sedikit mengetik, dan terutama digunakan dalam shell interaktif. Dalam skrip, Anda harus menggunakan:
</dev/null paste -d ' ||| ' fileA - - - - fileB
untuk mencegah munculnya subkulit.