Saya mencoba melakukan operasi matematika dengan sed
, tetapi terus memperlakukan variabel saya sebagai string. Masukannya seperti ini:
$ echo 12 | sed 's/[0-9]*/&+3/'$ 12+3
Saya ingin memiliki 15 sebagai output. Saya perlu melakukan operasi dan mengganti hasil matematikanya hanya dalam satu bagian, karena saya menjalankan program sebagai daemon Python, dan saya ingin menghindari bagian seperti mengarahkan stdout
pada file, buka file tersebut, lakukan operasi, ekstrak hasilnya, lakukan penggantian. Bagi saya, sed
tampaknya yang terbaik untuk melakukan semua dalam satu baris.
Saya telah mencoba memasukkan input dan output dengan berbagai cara seperti
$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'
tetapi hasilnya selalu berupa cetakan bidang kedua.
Jawaban yang Diterima:
Jika Anda benar-benar ingin menggunakan sed, inilah caranya:
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:tenss/|<||||||||||/gt tenss//gs/+//g:minuss/|- |/-/gt minus/-$//:punggung/|||||||||/
Masukan:
1+2100+250100-250
Keluaran:
3350-150
Misi Anda, jika Anda memilih untuk menerimanya, adalah menerapkan perkalian.