GNU/Linux >> Belajar Linux >  >> Linux

Gabungkan Dua File Baris demi Baris Dengan Simbol Pipa Tiga Pembatas “|||”?

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.


Linux
  1. Diurutkan dengan sort di baris perintah

  2. Menghitung Karakter Setiap Baris Dengan Wc?

  3. Bagaimana cara menggabungkan dua file menggunakan AWK?

  1. Menggabungkan dua file secara manual menggunakan diff

  2. Menggabungkan dua file HTML menjadi file master HTML

  3. Gabungkan file pdf dengan pengurutan numerik

  1. Memanipulasi teks pada baris perintah dengan sed

  2. Multi-Tugas di baris perintah dengan screenie

  3. Bagaimana membedakan hanya baris pertama dari dua file?