Ich habe eine Textdatei, in der Datensätze in zwei Zeilen aufgeteilt sind. Ich möchte sie in eine Zeile setzen. Die Aufzeichnungen sehen ungefähr so aus:
2013-07-29
apt-get install git
2013-07-29
apt-get install rsync
2013-07-31
apt-get install nmap
2013-08-02
apt-get install cifs-utils
2013-08-05
apt-get install telnet
Ich möchte folgendes bekommen:
2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
Ich habe es mit versucht sed
, aber ich kann nicht zwei Zeilen abgleichen. Gibt es einen Trick sed
oder ein besseres Werkzeug?
text-processing
sed
Martin Vegter
quelle
quelle
Antworten:
N
Verbindet die nächste Eingabezeile mit dem Musterbereichs/\n/ /
Ersetzt die neue Zeile, die die Zeilen trennt, durch ein Leerzeichen.oder:
-n
Deaktiviert das automatische Drucken des Musterbereichs als letzten Befehl/regex/p
druckt Linien, die mit Regex übereinstimmenVerwenden Sie den
g
Modifikator für die Ersetzungen, wenn Sie mehr als zwei Zeilen verbinden, zN;N;N;s/\n/ /g
.quelle
sed 's/>\n</>,</'
zur Arbeit zu kommen , bis mir klar wurde, dass sed gleichzeitig auf Linien arbeitet. Eine schnelle Duckduckgo-Suche und @peterph erlaubten mir, den Rest meiner Haare zu behaltenEs scheint, dass die
apt-get
Zeilen ein vorangestelltes Leerzeichen haben. Sprichwort:sollte das gewünschte Ergebnis liefern.
Alternativ können Sie auch Folgendes verwenden
paste
:quelle