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

Ergänzung mit „sed“?

Ich versuche, eine mathematische Operation mit sed durchzuführen , aber meine Variablen werden weiterhin als Zeichenfolgen behandelt. Die Eingabe ist von dieser Art:

$echo 12 | sed 's/[0-9]*/&+3/'$ 12+3 

Ich möchte 15 als Ausgabe haben. Ich muss die Operation ausführen und ihr mathematisches Ergebnis in nur einem Durchgang ersetzen, da ich das Programm als Python-Daemon ausführe und Passagen wie das Umleiten von stdout vermeiden möchte auf Dateien, öffnen Sie diese Dateien, führen Sie Operationen aus, extrahieren Sie das Ergebnis, führen Sie die Ersetzung durch. Für mich sed scheint das Beste zu sein, alles in einer Zeile auszuführen.

Ich habe versucht, sowohl die Eingabe als auch die Ausgabe auf verschiedene Weise umzuwandeln, z. B.

$echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/' 

aber das Ergebnis war immer ein Ausdruck des zweiten Feldes.

Akzeptierte Antwort:

Wenn Sie ernsthaft sed verwenden möchten, dann ist dies der richtige Weg:

s/[0-9]/<&/gs/0//g; s/1/|/g; s/2/||/g; s/3/|||/g; s/4/||||/g; s/5/|||||/g; s/6/||||||/gs/7/|||||||/g; s/8/||||||||/g; s/9/|||||||||/g:Zehner/| 

Eingabe:

1+2100+250100-250 

Ausgabe:

3350-150 

Ihre Mission, sollten Sie sich entscheiden, sie anzunehmen, ist es, die Multiplikation zu implementieren.


Linux
  1. Bearbeiten von Text auf der Kommandozeile mit sed

  2. Mehrere Muster gleichzeitig mit dem Sed-Befehl verwenden

  3. Wie erreicht man Portabilität mit Sed -i (In-Place-Editing)?

  4. Einen Regex extrahieren, der mit „sed“ übereinstimmt, ohne die umgebenden Zeichen auszugeben?

  5. Alle C-Kommentare mit Sed löschen?

Ersetzen Sie intelligente Anführungszeichen durch den Linux-Befehl sed

Bearbeiten von Text mit sed und grep

Verwendung des Linux-Befehls sed mit Beispielen

Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

sed Zeile mit Leerzeichen in eine bestimmte Zeile einfügen

Regulärer Ausdruck mit sed