Wie kann man einer Ausgabe einen „doppelten Zeilenabstand“ hinzufügen?

Wie kann man einer Ausgabe einen „doppelten Zeilenabstand“ hinzufügen?

Ich möchte die Ausgabe eines Bash-Befehls (in diesem Fall grep) nehmen und nach jeder zweiten Zeile eine Leerzeile einfügen:

not
like
this ...

but

like

this!

Eine clevere Möglichkeit, dies in Bash zu tun?

Antwort1

Es gibt viele Möglichkeiten, dies für Textdateien zu tun. Die einfachste ist wahrscheinlich

$ sed G filename

Antwort2

Verwendung prvon coreutils:

$ grep '' file | pr -Td
not

like

this ...

(beachten Sie, dass diesetutDoppelter Zeilenabstand in der letzten Zeile – anders als beispielsweise sed '$!G'). Von man pr:

   -d, --double-space
          double space the output

   -T, --omit-pagination
          omit page headers and trailers, eliminate any pagination by form
          feeds set in input files

Antwort3

Beginnen Sie mit einer Datei wie:

$ cat >file
not
like
this ...

sed funktioniert:

$ sed 's/$/\n/' file
not

like

this ...

Das wird awk auch tun:

$ awk 1 ORS='\n\n' file
not

like

this ...

1ist die kryptische Abkürzung von awk für „print-the-line“ und ORS='\n\n'weist awk an, Ausgabezeilen nicht nur durch eine, sondern durch zwei Zeilenumbrüche zu trennen.

Mehr

Ein kürzerer sed-Befehl, wie vorgeschlagen vonStahltreiber, Ist:

sed '$!G' file

Der GBefehl fügt eine neue Zeile an und dieLeertaste gedrückt haltenbis zum Ende desMusterraum. Da der Hold Space standardmäßig leer ist, wird dadurch lediglich ein zusätzlicher Zeilenumbruch am Ende jeder Zeile eingefügt. Das Präfix $!weist sed an, dies für alle Zeilen zu tun.außerder Letzte.

Antwort4

Test
10
20
30

Output
perl -pe "s/$/\n/" test 
10

20

30

verwandte Informationen