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/|<||||||||||/gt Zehner//gs/+//g:Minus/|- |/-/gt minuss/-$//:backs/||||||||||/
Eingabe:
1+2100+250100-250
Ausgabe:
3350-150
Ihre Mission, sollten Sie sich entscheiden, sie anzunehmen, ist es, die Multiplikation zu implementieren.