tempel file tanpa pembatas

8

Bagaimana cara saya menggabungkan dua file secara vertikal tanpa pemisah apa pun? Saya mencoba menggunakan paste -d"" a b, tetapi ini hanya memberi saya a.

File sampel:

000    0   0   0
0001000200030004
  10  20  30  40
    2000    4000
            .123
            12.1
1234234534564567
Tomas Greif
sumber
1
Apakah Anda yakin ini yang Anda dapatkan? paste - d"" a bakan menyisipkan konten dari stdin, file bernama d"", a, b.
cuonglm
@cuonglm salah ketik ... diperbaiki.
Tomas Greif
Kau off dengan satu karakter: paste -d "" a b.
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

14

pastegunakan \0untuk pembatas nol seperti yang didefinisikan oleh POSIX :

paste -d'\0' file1 file2

Penggunaannya -d"" a bsama dengan -d a b: pasteprogram melihat tiga argumen -d, adan b, yang membuat apembatas dan bnama file tunggal untuk di-paste.

Jika Anda menggunakan sistem GNU (Linux yang tidak tertanam, Cygwin, ...), Anda dapat menggunakan:

paste -d "" file1 file2

Formulir -d ""tidak ditentukan oleh POSIX dan dapat menghasilkan kesalahan di platform lain. Setidaknya BSD dan heirloom pasteakan melaporkan tidak ada kesalahan pembatas .

cuonglm
sumber
3
Berhati-hatilah saat mencoba mendapatkan sesuatu dari perilaku dari alat yang disebut "pusaka". pastedari suite ini ditulis oleh Gunnar Ritter dan tidak terkait dengan sumber UNIX. Bourne Shell dari suite itu berasal dari OpenSolaris Bourne Shell, tetapi memiliki bug sendiri sebagai hasil dari port cepat dan pincang ke defisit di Linux ( mis. implementasi wait () yang tidak kompatibel, periksa (exec ps)untuk memverifikasi hang yang tidak ada dalam aslinya dan yang tidak ada dalam Bourne Shell portabel saya.
schily
BTW: tempel pada Solaris sebelum ~ April 2010 memberikan kesalahan "tidak ada pembatas" dengan paste -d '' file1 file2tetapi sejak itu, tempel adalah implementasi tempel yang diambil dari David Korn dan izin ini -d "".
schily
@schily: Apa maksudmu "berasal"? Saya menyebutkan pusaka pastekarena saya memilikinya dan dapat mengujinya, saya tidak menggunakannya untuk "standar" atau apa pun.
cuonglm
@ Schily: Dan saya juga telah menguji dengan Solaris 11, tidakpaste memberikan kesalahan pembataspaste -d "" juga.
cuonglm
Banyak orang percaya bahwa alat dengan merek "heirloom" berasal dari sumber UNIX asli, tetapi pasta heirloom tidak.
schily
3

Solusinya adalah:

paste -d "\0" a b
Tomas Greif
sumber