GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sed mit Sonderzeichen verwenden?

Ich habe ein Verzeichnis voller XML-Dateien, die so aussehen, für die ich den Wert der „Offset“-Elementnummer von 1 in eine andere Zahl ändern möchte

$ cat my.xml
      <offset xmlns="">1</offset>

Ich habe verschiedene Kombinationen dieses sed-Befehls geschrieben, aber nichts, was ich ausprobiert habe, läuft ohne Fehler. Ich bin mir ziemlich sicher, dass ich einige der Zeichen maskieren muss, aber diejenigen, die ich ausprobiert habe, enden immer mit Fehlern („unerwartetes Token“, „unbekannte Option“ usw.). Ich habe es auch ohne das Flag -e versucht, da es wirklich kein Ausdruck ist.

sed -i -e s/<offset xmlns="">1</offset>/<offset xmlns="">99</offset>/ *.xml

Jede Hilfe wäre willkommen.

Akzeptierte Antwort:

Probieren Sie es aus,

$ sed 's~<offset xmlns="">1~<offset xmlns="">99~g' file
          <offset xmlns="">99</offset>

Verwenden Sie ein anderes sed-Trennzeichen, wenn die Eingabe Schrägstriche enthält.


Linux
  1. Farben mit printf verwenden

  2. Sonderzeichen in Unix anzeigen, während der Befehl „less“ verwendet wird

  3. Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

  4. Verwendung von find und tar mit Dateien mit Sonderzeichen im Namen

  5. Wie fülle ich eine Datei mit FF mit dd auf?

Tr-Befehl in Linux mit Beispielen

Verwenden des tr-Befehls in Linux, um mit Charakteren zu spielen

Linux tr-Befehl mit Beispielen

Wie kann man Zeichen rekursiv durch sed ersetzen?

Wie benenne ich alle Dateien mit Sonderzeichen und Leerzeichen in einem Verzeichnis um?

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)