Ich habe eine Textdatei, deren Datensätze auf zwei Zeilen aufgeteilt sind. Ich möchte sie in einer Zeile zusammenfassen. Die Datensätze 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 mir folgendes zulegen:
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 die beiden Zeilen nicht zuordnen. Gibt es einen Trick in sed
oder ein besseres Tool?
Antwort1
sed 'N;s/\n/ /'
N
verbindet die nächste Eingabezeile mit dem Musterraums/\n/ /
ersetzt die neue Zeile, die die Zeilen durch ein Leerzeichen trennt.
oder:
sed -n 'N;s/\n/ /;/regex/p'
-n
deaktiviert das automatische Drucken des Musterbereichs als letzten Befehl/regex/p
druckt Zeilen, die mit regulären Ausdrücken übereinstimmen
Verwenden Sie den g
Modifikator für die Ersetzungen, wenn Sie mehr als zwei Zeilen verbinden, z. B. N;N;N;s/\n/ /g
.
Antwort2
Es scheint, dass den apt-get
Zeilen ein Leerzeichen vorangestellt ist. Es heißt:
sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile
sollte das gewünschte Ergebnis erzielen.
Alternativ können Sie auch Folgendes verwenden paste
:
paste -d' ' - - < inputfile