Sed
bermaksud editor strim. Ia adalah editor berasaskan baris arahan untuk Linux. Penggunaan sed yang popular adalah untuk mengedit fail sebagai sebahagian daripada skrip automasi di Linux, seperti biasa editor memerlukan input pengguna aktif dan tidak boleh mengedit fail di luar skrin editor. Sed paling biasa digunakan untuk mencari dan menggantikan daripada baris arahan.
Penyunting teks jenis ini juga boleh dikategorikan sebagai penyunting teks bukan interaktif.
Mari kita lihat beberapa pilihan biasa untuk mengedit fail menggunakan Sed. Kami akan mengambil fail berikut sebagai contoh:
$: cat test.txt Seekor anjing coklat yang pantas melompat ke atas kucing yang malas itu. Sistem Operasi Linux. Hutan berhampiran tempat saya mempunyai kucing dan juga serigala.
Cari dan Ganti
Untuk mencari rentetan dalam fail dan gantikan dengan rentetan lain, jalankan:
sed -i "s/cat/fox/g" test.txt
Di sini, yang -i
flag mengarahkan sed untuk menulis perubahan pada fail. Tanpa bendera ini, sed
hanya akan memaparkan fail dengan rentetan yang diubah.
Dalam petikan, kita ada s/kucing/musang/g
. The s
adalah untuk perintah mencari dan menggantikan sed
. Kemudian kita mempunyai rentetan untuk dicari, iaitu kucing
. Kemudian rentetan untuk menggantikannya dengan, iaitu, musang
. Akhirnya, kami mempunyai pilihan g
, yang mengarahkan sed
untuk menggantikan semua kejadian pada semua baris fail. Tanpa g
, sed akan menggantikan hanya kejadian pertama kucing
pada setiap baris.
Regex juga boleh digunakan di sini.
sed -i "s/f[a-z]*\./cat\./g"
Sisipkan
Untuk memasukkan teks sebelum baris dengan rentetan yang sepadan, gunakan:
sed -i "/cat/i Mula:" test.txt
di sini, kucing
ialah rentetan yang dicari dan Mulakan:
ialah rentetan untuk dimasukkan sebelum baris di mana rentetan yang dicari ditemui.
Begitu juga, untuk memasukkan teks selepas baris, gunakan:
sed -i "/musang/a Tamat." test.txt
Padam
Untuk memadam baris dengan mengandungi subrentetan, gunakan:
sed -i "/Linux/d" test.txt
Untuk memadam baris dengan nombor baris, cth. baris pertama, gunakan:
sed -i '1d' test.txt
Menggabungkan pelbagai fungsi
Untuk menggabungkan pelbagai fungsi, cth. cari dan ganti, padam, dalam satu arahan, -e
bendera boleh digunakan.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Cheers!