GNU/Linux >> Belajar Linux >  >> Linux

Tambahan Dengan 'sed'?

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/| 

Masukan:

1+2100+250100-250 

Keluaran:

3350-150 

Misi Anda, jika Anda memilih untuk menerimanya, adalah menerapkan perkalian.


Linux
  1. Memanipulasi teks pada baris perintah dengan sed

  2. Bagaimana Mencapai Portabilitas Dengan Sed -i (Pengeditan di Tempat)?

  3. Mengekstrak Regex yang Dicocokkan Dengan 'sed' Tanpa Mencetak Karakter Sekitarnya?

  1. Menghapus Semua Komentar C Dengan Sed?

  2. Menggunakan Sed Dengan Karakter Khusus?

  3. Ekstrak Substring Menurut Regexp Dengan Sed Atau Grep?

  1. Menggunakan beberapa pola sekaligus dengan perintah Sed

  2. Mewarnai Keluaran Ekor Dengan Sed?

  3. sed dengan string literal - bukan file input