PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [BASH] Zeilenumbrüche aus Datei entfernen



[LX]
18.01.05, 23:53
Moin,

ich würde gern den Inhalt einer gesamten Datei auf einmal mit `sed` bearbeiten. Dazu müsste ich allerdings die Zeilenumbrüche entfernen (respektive durch ein anderes Trennzeichen ersetzen, da ich es ja später rückgängig machen will), da sed ja immer nur eine Zeile auf einmal bearbeitet.

Gibt's da eine Möglichkeit (und bitte nicht mit Perl *g), und wenn ja, wie?

Der Untergeher
19.01.05, 04:32
man tr
... aber das ist keine schöne Lösung ... Was willst du denn mit sed machen? Das geht bestimmt auch ohne "hinundherersetzen".

Grüße
Untergeher

sins
19.01.05, 07:04
Ack! Oder einfach in vim:

:%s/\n/\ /

MfG, sins

EDIT: Hab Mist geschrieben! Kommt davon, wenn man mit der ersten Antwort anfängt zu lesen und die Frage nur kurz überfliegt :ugly:

sorry, MfG, sins

mkahle
19.01.05, 07:21
']ich würde gern den Inhalt einer gesamten Datei auf einmal mit `sed` bearbeiten. Dazu müsste ich allerdings die Zeilenumbrüche entfernen (respektive durch ein anderes Trennzeichen ersetzen, da ich es ja später rückgängig machen will), da sed ja immer nur eine Zeile auf einmal bearbeitet.

Du hast ziemlich ungenau beschrieben, was Du machen willst, aber vielleicht helfen Dir ja die Multiline- (N,D,P) oder Holdspace-Kommandos (H,h,G,g,x) von sed weiter ...

Blackhawk
19.01.05, 11:14
wo ist der unterschied als wenn du die datei normal durch sed schiebst?

mkahle
19.01.05, 14:30
wo ist der unterschied als wenn du die datei normal durch sed schiebst?
Ganz einfach: Du kannst alle Zeile einer Datei in den Pattern-Space einlesen und Du kannst auf \n im Pattern-Space matches definieren.

[LX]
20.01.05, 18:04
Danke, tr ist schon das, was ich ungefähr suchte. :)

Es ging mir um einen möglichst einfachen Weg, C-Kommentare aus einer Datei zu entfernen. Da die ja auch mehrzeilig sein können, ist das nicht so ganz trivial... es sei denn, man kann die Zeilenumbrüche halt vorher ersetzen und hinterher wieder einfügen.

Fertig schaut das nun so aus:

cat whatever.c | tr "\n \r" "$ §" | sed "s/\/\*.*\*\///g" | tr "$ §" "\n \r"

Hun
20.01.05, 20:32
Wie wär's für dieses Vorhaben mit
gcc -e


Verwendet den C-Preprozessor, welcher unter anderem für sowas geschrieben wurde.