Befehl Einfügen: Festlegen (mehrerer) Trennzeichen

9

Unter Linux habe ich das folgende Problem mit pasteab (GNU coreutils) 8.13:

Wenn Sie versuchen, ein anderes Trennzeichen als das Standardtrennzeichen (TAB) festzulegen, wird entweder nur das erste Zeichen des definierten Trennzeichens gedruckt oder es wird vollständig ignoriert.

Frage : Wie definiert man bei der Verwendung (mehrere) Trennzeichen paste ?

Einfach zu verwenden, zB abc-123 als Trennzeichen, wäre schön. Mit "mehrfach" meine ich zB 2 TABS anstelle von einem.


Die Muster, die die Begrenzer einschließen, die ich bisher ausprobiert habe, waren

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

Alle mit dem gleichen Ergebnis: Nur das erste Zeichen wird akzeptiert oder perfekt ignoriert. Ich habe auch die Kurzversion -d"\"und mehrere Instanzen ausprobiert & ndahs; nichts.

Ebenfalls:

  • --delimiters="\\" → Fehlermeldung

Was funktioniert perfekt, aber nicht was ich will:

  • --delimiters="\n" → Zeilenumbruch
  • --delimiters="\0" → nichts dazwischen
  • --delimiters="\t"TABdie Standardeinstellung. Toll.
erch
quelle

Antworten:

16

Um abczwischen Datei1 und Datei2 zu haben, haben Sie folgende Möglichkeiten:

paste -d abc file1 /dev/null /dev/null file2

Oder:

paste -d abc file1 - - file2 < /dev/null

Wenn Sie zwei Registerkarten möchten:

paste file1 /dev/null file2
Stéphane Chazelas
quelle
" Verwenden /dev/null, um zwei Spalten in der Textverarbeitung zu erstellen " funktioniert (außerdem: Ist das allgemein bekannt, das ich bisher vermisst habe, und wenn nicht:
Woher
1
@ Chirp.NotLuke. /dev/nullwirkt wie eine leere Datei , wenn, so dass Sie Einfügen Lese file1und leere Datei und leere Datei, file2 mit Separatoren sind, wiederum a, bund c. Details zur Funktionsweise -dfinden Sie in der pasteManpage.
Stéphane Chazelas
@ StéphaneChazelas kannst du auch pr -mts'abc' file1 file2als Alternative hinzufügen ?
Sundeep
4

Da Sie nur zwei Dateien zum Verknüpfen angeben, wird jedes Zeichen der Trennzeichenfolge zwischen den einzelnen Zeilenverknüpfungen aus den Eingabedateien verwendet.

z.B

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...
X Tian
quelle
2

Auf BSD-Systemen (meines Wissens nicht unter Linux) gibt es das lamDienstprogramm (wie bei „Laminat“), das schneller und kürzer als die oben genannte Lösung ist:

lam file1 -s delimiter file2
emm
quelle