sed
で数学演算を実行しようとしています 、しかしそれは私の変数を文字列として扱い続けます。入力は次のようなものです:
$ echo 12 | sed's / [0-9] * /&+ 3 /'$ 12 + 3
15を出力したいのですが。プログラムをPythonデーモンとして実行しており、 stdout
のリダイレクトなどのパッセージを避けたいので、操作を実行してその数学的な結果を1つのパッセージで置き換える必要があります。 ファイルに対して、それらのファイルを開き、操作を実行し、結果を抽出し、置換を行います。私にとって、 sed
すべてを1行で実行するのが最善のようです。
のようなさまざまな方法で入力と出力の両方をキャストしようとしました
$ echo 12 | sed's / [0-9] * / int(&+ 3)/' $ echo 12 | sed's / [0-9] * / int(&+ 3)/' $ echo 12 | sed's / [0-9] * / int(&+ 3)/'
しかし、結果は常に2番目のフィールドの印刷でした。
承認された回答:
正直にsedを使用したい場合は、次の方法があります:
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:数十 / | <||||||||||/gt数//gs / + // g:マイナス/ |- | /-/gtマイナス/-$//:戻る/ |||||||||| / gs / <([0-9] *)$ / <01 / s / ||||| |||| / 9 /; s / |||||||| / 8 /; s / ||||||| / 7 /; s / |||||| / 6 /; s / ||||| / 5 /; s / |||| / 4 / s / ||| / 3 /; s / || / 2 /; s / | / 1 / s / |/gt戻る
入力:
1 + 2100 + 250100-250
出力:
3350-150
あなたがそれを受け入れることを選択した場合、あなたの使命は乗算を実装することです。