Dateien ohne Trennzeichen einfügen

8

Wie verbinde ich zwei Dateien vertikal ohne Trennzeichen? Ich habe versucht zu verwenden paste -d"" a b, aber das gibt mir nur a.

Beispieldatei:

000    0   0   0
0001000200030004
  10  20  30  40
    2000    4000
            .123
            12.1
1234234534564567
Tomas Greif
quelle
1
Bist du sicher, dass du das bekommst? paste - d"" a beinfügen werden Inhalte aus stdin, Datei mit dem Namen d"", a, b.
Cuonglm
@cuonglm Tippfehler ... behoben.
Tomas Greif
Sie waren von einem Charakter entfernt : paste -d "" a b.
G-Man sagt "Reinstate Monica"

Antworten:

13

pasteVerwendung \0für Nulltrennzeichen wie von POSIX definiert :

paste -d'\0' file1 file2

Unter Verwendung -d"" a bist die gleiche wie -d a b: das pasteProgramm drei Argumente sieht -d, aund b, was macht adas Trennzeichen und bden Namen der einzigen Datei einzufügen.

Wenn Sie sich auf einem GNU-System befinden (nicht eingebettetes Linux, Cygwin,…), können Sie Folgendes verwenden:

paste -d "" file1 file2

Das Formular -d ""ist von POSIX nicht spezifiziert und kann auf anderen Plattformen zu Fehlern führen. Zumindest BSD und Erbstück pastemelden keinen Trennzeichenfehler .

cuonglm
quelle
3
Seien Sie vorsichtig, wenn Sie versuchen, etwas aus dem Verhalten der sogenannten "Erbstück" -Werkzeuge abzuleiten. pasteDiese Suite wurde von Gunnar Ritter geschrieben und hat nichts mit den UNIX-Quellen zu tun. Die Bourne-Shell aus dieser Suite wurde von der OpenSolaris Bourne-Shell abgeleitet, weist jedoch aufgrund eines schnellen und hackigen Ports zu den Defiziten unter Linux eigene Fehler auf ( Überprüfen Sie beispielsweise bei einer inkompatiblen wait () -Implementierung (exec ps), ob ein Hang vorhanden ist, der im Original nicht vorhanden ist und in meiner tragbaren Bourne Shell nicht vorhanden ist.
schily
Übrigens: Einfügen unter Solaris vor ~ April 2010 gibt einen Fehler "kein Trennzeichen" mit aus, paste -d '' file1 file2aber seitdem ist Einfügen die Einfügeimplementierung von David Korn und dies erlaubt -d "".
schily
@schily: Was meinst du mit "ableiten"? Ich erwähne Erbstück, pasteweil ich es hatte und damit testen kann, ich benutze es nicht für "Standard" oder irgendetwas anderes.
Cuonglm
@schily: Und auch ich habe mit Solaris 11 getestet, es pastegab auch keinen Trennzeichenfehler für paste -d "".
Cuonglm
Viele Leute glauben, dass Tools mit der Marke "heirloom" aus Original-UNIX-Quellen stammen, Heirloom-Paste jedoch nicht.
schily
3

Die Lösung ist:

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