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

Wie ersetze ich alle Zeichenfolgen in einer Datei, die mit einem Präfix beginnen?

Beispiel:

1:20 2:25 3:0.432 2:-17 10:12

Ich möchte alle Zeichenfolgen ersetzen, die beginnen mit 2: zu 2:0 .

Ausgabe:

1:20 2:0 3:0.432 2:0 10:12

Akzeptierte Antwort:

Mit sed :

sed -E 's/((^| )2:)[^ ]*/\10/g' in > out

Auch, wie von souravcs Antwort inspiriert, wenn es nicht gibt eine Chance auf 2: substring nach dem Anfang eines Strings nicht mit einem vorangestellten 2: Teilstring (z. B. gibt es not eine Chance auf 1:202:25 Zeichenfolge, die der folgende verkürzte Befehl durch 1:202:0 ersetzen würde ), könnte der Befehl wie folgt abgekürzt werden:

sed -E 's/2:[^ ]*/2:0/g' in > out

Aufschlüsselung von Befehl Nr. 1 / Nr. 2 :

  • -E :macht sed das Muster als ERE-Muster (Extended Regular Expression) interpretieren;
  • > out :leitet stdout um zu out;

sed Befehl Nr. 1 Aufschlüsselung :

  • s :behauptet, eine Ersetzung durchzuführen
  • / :Startet das Muster
  • ( :startet die einfangende Gruppe
  • ( :Beginnt mit der Gruppierung der zulässigen Zeichenketten
  • ^ :entspricht dem Anfang der Zeile
  • | :trennt den zweiten erlaubten String
  • :entspricht einem Charakter
  • ) :stoppt die Gruppierung der erlaubten Strings
  • 2 :entspricht einem 2 Charakter
  • : :entspricht einem : Charakter
  • ) :stoppt die einfangende Gruppe
  • [^ ]* :stimmt mit einer beliebigen Anzahl von Zeichen überein, außer
  • / :stoppt das Muster / startet den Ersatzstring
  • \1 :Rückverweis durch die erste einfangende Gruppe ersetzt
  • :fügt einen hinzu Charakter
  • / :stoppt den Ersetzungsstring / startet die Musterflags
  • g :behauptet, die Ersetzung global durchzuführen, d. h. jedes Vorkommen des Musters in der Zeile zu ersetzen

sed Befehl #2 Aufschlüsselung :

  • s :behauptet, eine Ersetzung durchzuführen
  • / :Startet das Muster
  • 2 :entspricht einem 2 Charakter
  • : :entspricht einem : Charakter
  • [^ ]* :stimmt mit einer beliebigen Anzahl von Zeichen überein, außer
  • / :stoppt das Muster / startet den Ersatzstring
  • 2:0 :fügt ein 2:0 hinzu Zeichenfolge
  • / :stoppt den Ersetzungsstring / startet die Musterflags
  • g :behauptet, die Ersetzung global durchzuführen, d. h. jedes Vorkommen des Musters in der Zeile zu ersetzen

Ubuntu
  1. Wie ersetze ich Grub durch Burg?

  2. Wie öffne ich eine .8-Datei mit Man?

  3. Wie verstecke ich Dateien mit einer bestimmten Erweiterung?

  4. Wie baut man ein Linux-Kernel-Modul so, dass es mit allen Kernel-Releases kompatibel ist?

  5. Wie wähle ich den gesamten Text aus einer Datei mit Nano aus?

Umgang mit Dateien mit Scilab unter Ubuntu 15.04

So lesen Sie eine Datei mit Leerzeichen in Linux

So führen Sie .sh-Dateibefehle auf einmal in Linux aus

So ersetzen Sie Leerzeichen in Dateinamen durch Unterstriche in der Linux-Shell

Newline durch Nul ersetzen?

Wie erhalte ich einen Link der Datei zum Herunterladen mit Wget?