PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zwei zeilen einer textdatei zusammenfuegen



spacebull
17-08-2004, 17:37
Hallo,
ich habe eine sehr lange textdatei mit Eintraegen folgender Art:

--------------------------------------
12345
12.34.56.78 user pwd
--
34221
12.32.45.21 user pwd
--
11232
11.44.33.22 user pws
---------------------------------------

nun moechte ich es gerne in folgender form haben:
--------------------------------------
12345 12.34.56.78 user pwd
--
--------------------------------------
12345 12.34.56.78 user pwd
34221 12.32.45.21 user pwd
11232 11.44.33.22 user pws
---------------------------------------

die "--" zw. den zeilen koennen weg, muessen net, is egal.

ich hab die dateien bisher mit sed und grep in das beschriebene format gebracht. aber das 2 auf 1 zeile problem bekomm ich net hin.. kann mir bitte jmd. sagen wie ich das schaffe?!

danke schon mal.
mfg matthias

peschmae
17-08-2004, 17:53
Das geht beispielsweise mit Sed. Beschrieben u.A. in dem Buch http://polymer.bu.edu/~fding/sedawk/ Kapitel 6.
Gehört aber schon zu den komplizierteren Sachen in Sed:


sed '/^[0-9][0-9]*$/ {
N
s/\n//g
}' input.txt


das /^[0-9][0-9]*/ bewirkt, dass der Code zwischen den {} nur für Zeilen ausgeführt wird, die eine oder mehrere Zahlen enthalten.
Das N bewirkt das einlesen einer zusätzlichen Zeile - sed arbeitet nun mit "12345\n12.34.56.78 user pwd" im sog. Pattern space. Die dritte Zeile schliesslich entfernt das \n
Am Ende wird der Pattern space automatisch ausgegeben.

MfG Peschmä

spacebull
18-08-2004, 08:58
Hallo, danke fuer die superschnelle Antwort!
Ich habe nur ein kleines Problem:

Wenn ich das script auf die zeilen Anwende, die ich hier ins Forum gepostet habe klappt alles super.

Aber wenn ich sie auf meine eigene Datei anwende nicht. Muss wohl am Zeichensatz liegen oder so. Er scheint das Zeilenende nciht zu finden.
Hast du da noch nen guten tip? Ich hab schon bissle mit recode rumprobiert aber noch nix richtiges gefunden :-(

MfG
Matthias

Blackhawk
18-08-2004, 09:04
dos2ux?

...

spacebull
18-08-2004, 09:08
recode latin1/cr-lf..latin1 hats gebracht.
hab vorher immer mit ibmpc gemacht. und da hat nix hingehauen.

danke!