Mam plik tekstowy, w którym rekordy są podzielone na dwie linie. Chciałbym umieścić je w jednym wierszu. Dane wyglądają mniej więcej tak:
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
Chciałbym uzyskać następujące informacje:
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
Próbowałem z sed
, ale nie jestem w stanie dopasować dwóch linii. Czy jest jakaś sztuczka sed
, czy jest jakieś lepsze narzędzie?
text-processing
sed
Martin Vegter
źródło
źródło
Odpowiedzi:
N
łączy następny wiersz wejściowy z przestrzenią wzoróws/\n/ /
zastępuje nową linię oddzielającą linie spacją.lub:
-n
wyłącza automatyczne drukowanie przestrzeni wzorów jako ostatnie polecenie/regex/p
wypisuje linie pasujące do wyrażenia regularnegoUżyj
g
modyfikatora do podstawień, jeśli dołączasz do więcej niż dwóch linii, npN;N;N;s/\n/ /g
.źródło
sed 's/>\n</>,</'
do pracy, dopóki nie zdałem sobie sprawy, że sed działa na liniach naraz. jedno szybkie wyszukiwanie duckduckgo i @peterph pozwoliło mi zachować resztę włosówWygląda na to, że
apt-get
linie mają poprzedzające białe znaki. Powiedzenie:powinien dać pożądany rezultat.
Możesz także użyć
paste
:źródło