stiziwik
Sie befinden sich hier: Willkommen » Datenverarbeitung » Text » Sed
Zuletzt angesehen: • Sed

Sed

Mit dem Programm sed lässt sich Text manipulieren.
Hier einige Beispiel Skripssnipsel.

Ausgabe suchen und ersetzen

Wenn man eine Variable übergeben möchte z.B. mit read dann muss der Anweisungsstring für sed in doppelten Anführungszeichen angegeben werden. Auch regular expressions funktionieren im Anweisungsstring

read -p "servername angeben: " svr; sed "s/^$svr|[0-9]\+/$svr|1/g" <DATEINAME>; cat <DATEINAME>
regexp Bedeutung
^ suche am Zeilenanfang
[0-9] suche nach einer Ziffer 0-9
\+ suche nach einer Zahl, die aus einer oder mehreren o.g. Ziffern bestehen kann

In diesem Beispiel legt man sich eine Testdatei wie folgt an:

servername1|0
servername2|3
servername6|11
...

Der o.g. sed-String würde nach einem Servernamen fragen und dann die Zahl hinter dem „|“ durch eine „1“ ersetzen.

Dateiinhalt suchen und ersetzen

Wenn der Inhalt einer Datei, mit Sed, direkt geändert werden soll, muss dem Sed-String noch der Parameter -i hinzugefügt werden.
Hier anhand des Beispiels von oben:

... sed -i "s/^$svr|[0-9]\+/$svr|1/g" <DATEINAME>; cat <DATEINAME>

Ersetze „was“ mit „etwas“ NUR in Zeilen die „wo“ enthalten

sed '/wo/s/etwas/et#was/g'

Ersetze „foo“ mit „bar“ AUSSER in Zeilen die „baz“ enthalten

sed '/wo/!s/etwas/et#was/g'

Mehrfache Suchausdrücke in einem Befehl

sed 's/<SUCHBEGRIFF>//;s/<SUCHBEGRIFF>//'

Rekursiv suchen und ersetzen

Mit find lassen sich verschiedene Suchergebnisse erzielen z.B. suchen nach allen Dateien in einer Ordnerstruktur. Die Suchergebnisse lassen sich dann mit dem Parameter -exec weiterverarbeiten.

find . -type f -exec sed -ie 's!<SUCHSTRING>!<SUCHSTRING>!g' {} \;

Kommentieren

  • Auskommentieren: Suchbegriff suchen und diesen sowie 2 folgende Zeilen auskommentieren
    sed -i~ -r '/^#?<SUCHBEGRIFF>/,+2 s/^/#/' <DATEINAME>
  • Einkkommentieren: Suchbegriff suchen und diesen sowie 2 folgende Zeilen auskommentieren
    sed -i~ -r '/^#?<SUCHBEGRIFF>/,+2 s/^#+//' <DATEINAME>

Einfügen

  • vor dem Suchtext
    sed -i -r '/^<SUCHSTRING>/ i <TEXT_AUCH_LEERZEICHEN_GETRENNT>' <DATEINAME>
  • nach dem Suchtext
    sed -i -r '/^<SUCHSTRING>/ a <TEXT_AUCH_LEERZEICHEN_GETRENNT>' <DATEINAME>

Zahlen mit Komma versehen

Hiermit wird am Beispiel: „bla test 20130607215015 some text“ die Zahl von hinten, an jeder 3. Stelle, mit einem Komma versehen.

 echo "bla test 20130607215015 some text" | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta'

Das Ergebnis sieht dann so aus:

bla test 20,130,607,215,015 some text

Möchte man hingegen nur ein Komma setzen, kann dies wie folgt ausgeführt werden.

echo 2346455736745 | sed 's/\B[0-9]\{3\}\>/,&/'

Ergebnis aus „asdftt 2346455736745 asdfgg 34567889“

asdftt 2346455736,745 asdfgg 34567889

Wenn man alles Zahlen finden und ersetzen möchte, fügt man dem sed Befehl noch ein „g“ hinzu.

echo 2346455736745 | sed 's/\B[0-9]\{3\}\>/,&/g'

Ergebnis aus „asdftt 2346455736745 asdfgg 34567889“

asdftt 2346455736,745 asdfgg 34567,889
Previous Next

Webseiten-Werkzeuge

  • Letzte Änderungen
  • Medien-Manager
  • Übersicht

Seiten-Werkzeuge

  • Zeige Quelltext
  • Ältere Versionen
  • Links hierher
  • Nach oben

Benutzer-Werkzeuge

  • Anmelden
datenverarbeitung/text/sed.txt · Zuletzt geändert: 2018/03/23 13:36 von 127.0.0.1
stiziwik

Table of Contents

Inhaltsverzeichnis

  • Sed
    • Ausgabe suchen und ersetzen
    • Dateiinhalt suchen und ersetzen
    • Rekursiv suchen und ersetzen
    • Kommentieren
    • Einfügen
    • Zahlen mit Komma versehen
  • Android
  • Bild-und-video
  • Datenverarbeitung
    • Audio
    • Bilder
    • Dokumentscanner
    • Text
      • Awk
      • Logs Mit Timestamp
      • Notepadqq
      • Sed
      • Vim
    • Video
    • Passwörter
  • Fahrzeuge
  • Hausautomatisation
  • linux
  • Nas
  • Netzwerk
  • PlayGround
  • Programieren
  • Projekte
  • Raspberry Pi
  • sonstiges
  • VDR
  • Web
  • Werkstatt
  • Wiki
  • sidebar-acmenu
  • sidebar-indexmenu
  • sidebar-simplenavi