GNU/Linux >> Belajar Linux >  >> Linux

perintah sed dengan opsi -i gagal di Mac, tetapi berfungsi di Linux

Saya percaya pada OS X saat Anda menggunakan -i ekstensi untuk file cadangan diperlukan . Coba:

sed -i .bak 's/hello/gbye/g' *

Menggunakan GNU sed ekstensi ini opsional .


Jika Anda menggunakan -i Anda perlu menyediakan ekstensi untuk cadangan Anda.

Jika Anda memiliki:

File1.txt
File2.cfg

Perintah (perhatikan kurangnya ruang antara -i dan '' dan -e untuk membuatnya berfungsi pada versi baru Mac dan GNU):

sed -i'.original' -e 's/old_link/new_link/g' *

Buat 2 file cadangan seperti:

File1.txt.original
File2.cfg.original

Tidak ada cara portabel untuk menghindari membuat file cadangan karena tidak mungkin menemukan campuran perintah sed yang berfungsi pada semua kasus:

  • sed -i -e ... - tidak bekerja pada OS X karena membuat -e backup
  • sed -i'' -e ... - tidak berfungsi di OS X 10.6 tetapi berfungsi di 10.9+
  • sed -i '' -e ... - tidak bekerja di GNU

Catatan Mengingat tidak ada perintah sed yang berfungsi di semua platform, Anda dapat mencoba menggunakan perintah lain untuk mendapatkan hasil yang sama.

Misalnya, perl -i -pe's/old_link/new_link/g' *


Linux
  1. Ganti kutipan pintar dengan perintah sed Linux

  2. Perintah Tee Linux dengan Contoh

  3. Perintah kepala Linux dengan Contoh

  1. Cara Menggunakan Perintah Sed di Linux dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. Apakah ada perintah linux seperti mv tetapi dengan regex?

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Echo di Linux (Dengan Contoh)