「sed」を追加

「sed」を追加

を使用して数学を実行しようとしていますが、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

あなたがそれを受け入れることを選択した場合、あなたの使命は乗算を実装することです。

おすすめ記事