を使用して数学を実行しようとしていますが、sed
変数は文字列として処理され続けます。入力は次のとおりです。
$ echo 12 | sed 's/[0-9]*/&+3/'
$ 12+3
私は15を出力として欲しい。プログラムをPythonデーモンとして実行し、stdout
ファイルのリダイレクト、そのファイルを開く、タスクの実行、結果の抽出などの段落の置き換えを避けたいので、ある記事でタスクを実行して数学的な結果を変更するだけです。 。私にとって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番目のフィールドを印刷します。
ベストアンサー1
本当にsedを使用したい場合は、次のようにします。
s/[0-9]/<&/g
s/0//g; s/1/|/g; s/2/||/g; s/3/|||/g; s/4/||||/g; s/5/|||||/g; s/6/||||||/g
s/7/|||||||/g; s/8/||||||||/g; s/9/|||||||||/g
: tens
s/|</<||||||||||/g
t tens
s/<//g
s/+//g
: minus
s/|-|/-/g
t minus
s/-$//
: back
s/||||||||||/</g
s/<\([0-9]*\)$/<0\1/
s/|||||||||/9/; s/||||||||/8/; s/|||||||/7/; s/||||||/6/; s/|||||/5/; s/||||/4/
s/|||/3/; s/||/2/; s/|/1/
s/</|/g
t back
入力する:
1+2
100+250
100-250
出力:
3
350
-150
あなたがそれを受け入れることを選択した場合、あなたの使命は乗算を実装することです。