Ersetzen ueber zwei Zeilen hinweg

05/11/2007 - 14:08 von Ole Streicher | Report spam
Hallo Gruppe(n),

ich habe gerade ein Brett vor dem Kopf: ich möchte gerne in einer
Unix-Pipe alle Sequenzen "Newline 5 Spaces ein Nicht-Space" löschen
(FORTRAN-Fortsetzungszeilen):

8<--
Ret_Code = MYOP(a, b, c,
& d, e, f)
8<--
soll z.B. folgenden werden:
8<--
Ret_Code = MYOP(a, b, c, d, e, f)
8<--

Wie stelle ich das mit Standard-Unix-Tools an? sed arbeitet ja streng
zeilenweise und kann mir kein newline 'rausschmeissen.

Viele Grüße

Ole

Ich habe ja auch nie bezweifelt, daß emacs ein tolles Betriebssystem
ist. Aber um mit Linux oder Windows konkurrieren zu können, fehlt ihm
ein vernünftiger Editor.
 

Lesen sie die antworten

#1 Lutz Donnerhacke
05/11/2007 - 14:51 | Warnen spam
* Ole Streicher wrote:
ich habe gerade ein Brett vor dem Kopf: ich möchte gerne in einer
Unix-Pipe alle Sequenzen "Newline 5 Spaces ein Nicht-Space" löschen
(FORTRAN-Fortsetzungszeilen):

Wie stelle ich das mit Standard-Unix-Tools an? sed arbeitet ja streng
zeilenweise und kann mir kein newline 'rausschmeissen.



Was sind Standard-Unix-Tools? Coreutil?
Normalerweise nimmt man dafür Perl, aber es geht auch mit sed.

Wenn man's einfach haben will, nimmt man tac | sed | tac, denn dann kommt
die Fortsetzungszeile vor der anderen. /^ {5}[^ ]/,+1s/(.*)(.*)/\2\1/

Oder man schachtelt es zwischen tr '' '°' | sed 's/°( {5}[^ ])/\1/;y/°//'

Ähnliche fragen