Dieter: Output-File für sed

Guten Abend!

Kann man bei sed auch eine Art Output file angeben? Also ich z.B. die Zeichenkette Test1 in Datei test durch Test2 ersetzen:

sed 's/Test1/Test2/g' test > test funktioniert nicht, danach ist test nämlich leer. Gibt es noch eine andere Möglichkeit? Ich will dazu nämlich keine tmp-Datei benutzen.

  1. Hallo Dieter.

    sed 's/Test1/Test2/g' test > test funktioniert nicht, danach ist test nämlich leer. Gibt es noch eine andere Möglichkeit? Ich will dazu nämlich keine tmp-Datei benutzen.

    Du könntest sed anweisen, die jeweilige Datei direkt zu bearbeiten. Merkwürdigerweise ist das hierzu erforderliche Argument in der deutschen sed-Manpage nicht dokumentiert. Hier der Auszug aus der englischen:

    -i[SUFFIX], --in-place[=SUFFIX]

    edit files in place (makes backup if extension supplied)

    Einen schönen Freitag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  2. Moin!

    sed 's/Test1/Test2/g' test > test funktioniert nicht, danach ist test nämlich leer. Gibt es noch eine andere Möglichkeit? Ich will dazu nämlich keine tmp-Datei benutzen.

    Ja und nein. Das die Datei leer ist ist normal, weil um hineinzuschreiben wird diese geöffnet, dern Länge auf 0 gesetzt und erst dann geschrieben. Zudem wird die Datei erst zum Schreiben geöffnet, also geleert und dann gelesen.

    Du kannst über eine Variable gehen:

    ~ variable=sed 's/Test1/Test2/g' test && echo $variable > test

    vor 'sed' und nach 'test' stehen backticks. (Das sind diese kleinen, von links nach rechts geneigten Schrägstriche)

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development