Pendahuluan
sed (s tream ed itor) utilitas adalah penguraian teks dan alat transformasi berorientasi garis. sed
perintah menggunakan bahasa pemrograman sederhana dan ekspresi reguler untuk memproses aliran teks dan file. Fitur yang paling sering digunakan dari sed
perintah adalah substitusi string.
Panduan ini menunjukkan cara menggunakan sed
untuk menemukan dan mengganti string melalui contoh.
Prasyarat
- Akses ke baris perintah/terminal.
- File teks (panduan ini menyediakan example.txt berkas).
- Perintah terminal dasar (ambil lembar contekan gratis kami).
sed Temukan dan Ganti Sintaks
Sintaks untuk mencari dan mengganti teks menggunakan sed
perintahnya adalah:
sed -i 's/<search regex>/<replacement>/g' <input file>
Perintah terdiri dari berikut ini:
-i
memberitahused
perintah untuk menulis hasil ke file, bukan output standar.s
menunjukkan perintah pengganti./
adalah karakter pembatas yang paling umum. Perintah tersebut juga menerima karakter lain sebagai pembatas, yang berguna ketika string berisi garis miring.<search regex>
adalah parameter pencarian string atau ekspresi reguler.<replacement>
adalah teks pengganti.g
adalah flag pengganti global, yang menggantikan semua kemunculan string, bukan hanya yang pertama.<input file>
adalah file tempat pencarian dan penggantian terjadi.
Kutipan tunggal membantu menghindari ekspansi meta-karakter di shell.
Versi BDS dari sed
(termasuk macOS) tidak mendukung pencocokan peka huruf besar-kecil atau penggantian file. Perintah untuk penggantian file terlihat seperti ini:
sed 's/<search regex>/<replacement>/g' <input file> > <output file>
Atau, instal versi GNU sed
di macOS dengan homebrew:
brew install gnu-sed
Jalankan GNU sed
perintah sebagai berikut:
gsed -i 's/<search regex>/<replacement>/g' <input file>
Ganti sed
perintah dengan gsed
untuk mengikuti contoh di bawah ini.
sed Ganti Contoh
Contoh dari panduan ini menggunakan file sampel untuk mengganti string.
1. Buat contoh file teks:
nano example.txt
2. Tambahkan konten berikut:
foobarbazfoobarbaz
foo bar baz foo bar baz
Foo Bar Baz Foo Bar Baz
FOO BAR BAZ FOO BAR BAZ
/foo/bar/baz /foo/bar/baz
Gunakan file sebagai masukan untuk menguji contoh di bawah.
Catatan :Untuk sed
full lengkap tutorial perintah untuk Linux, lihat panduan sed command Linux kami.
Ganti String Pertama yang Cocok
1. Untuk mengganti contoh kata bar yang pertama kali ditemukan dengan linux di setiap baris file, jalankan:
sed -i 's/bar/linux/' example.txt
2. -i
tag menyisipkan perubahan ke example.txt mengajukan. Periksa isi file dengan perintah cat:
cat example.txt
Perintah menggantikan contoh pertama bar dengan linux di setiap baris, termasuk substring. Pencocokannya tepat, mengabaikan variasi kapitalisasi.
Ganti Global
Untuk mengganti setiap kecocokan string dalam file, tambahkan g
bendera ke skrip. Misalnya:
sed -i 's/bar/linux/g' example.txt
Perintah secara global menggantikan setiap instance bar dengan linux dalam file.
Cocokkan dan Ganti Semua Casing
Untuk menemukan dan mengganti semua contoh kata dan mengabaikan kapitalisasi, gunakan I
parameter:
sed -i 's/bar/linux/gI' example.txt
Perintah tersebut menggantikan semua contoh kata bar dalam teks, mengabaikan kapitalisasi.
Abaikan Substring
Tambahkan batas kata (\b
) ke sed
perintah untuk mengabaikan substring saat mengganti string dalam file. Misalnya:
sed -i 's/\bbar\b/linux/gI' example.txt
Atau, ubah pembatas untuk membuat perintah lebih mudah dibaca:
sed -i 's:\bbar\b:linux:gI' example.txt
Perintah mengabaikan substring, hanya mencocokkan seluruh kata.
Menemukan dan Mengganti String Dengan Garis miring
Keluar dari karakter garis miring untuk menemukan dan mengganti string dengan garis miring. Misalnya, untuk mengganti /foo/bar/baz dengan /home/kb , gunakan sintaks berikut:
sed -i 's/\/foo\/bar\/baz/\/home\/kb/g' example.txt
Atau, ubah pembatas untuk menghindari keluarnya karakter:
sed -i 's:/foo/bar/baz:/home/kb:g' example.txt
Gunakan sintaks ini untuk mengganti jalur dan string lain dengan garis miring.
Temukan dan Ganti dengan Ekspresi Reguler
Pola pencarian untuk sed
perintah menerima ekspresi reguler, mirip dengan grep regex. Misalnya, untuk mencocokkan semua huruf kapital dan menggantinya dengan 5 , gunakan:
sed -i 's/[A-Z]/5/g' example.txt
Pola regex membantu menemukan semua huruf kapital dan menggantinya dengan nomor dalam file.
Referensi Ditemukan String
Gunakan karakter ampersand (&
) untuk mereferensikan string yang ditemukan. Misalnya, untuk menambahkan garis miring (/ ) sebelum setiap instance foo dalam sebuah file, gunakan:
sed -i 's/foo/\/&/gI'example.txt
Alih-alih mengetik ulang parameter penelusuran, &
tanda mereferensikan string yang ditemukan.
Buat Cadangan
Untuk membuat file cadangan sebelum menimpa yang sudah ada, tambahkan .bak
parameter ke -i
tag.
sed -i.bak 's/foo/FOO/g' example.txt
Perintah membuat cadangan (example.txt.bak
) sebelum menimpa yang asli. Gunakan metode ini untuk menyimpan salinan dalam format aslinya dan menghindari penimpaan.
Temukan dan Ganti Rekursif
Gunakan perintah find untuk mencari file dan menggabungkannya dengan sed
untuk mengganti string dalam file secara rekursif. Misalnya:
find -name 'example*' -exec sed -i 's/[a-z]/5/gI' {} +
Perintah menemukan semua file yang dimulai dengan contoh dan menjalankan sed
perintah pada file. Perintah yang dieksekusi menggantikan semua huruf dengan 5 , mengabaikan kapitalisasi.
Kesimpulan
Setelah melalui contoh dalam panduan ini, Anda tahu cara menggunakan sed
untuk mengganti string dalam file. sed
command adalah utilitas manipulasi teks yang kuat dengan banyak fitur canggih.
Selanjutnya, lihat perintah awk atau gawk untuk mempelajari tentang alat manipulasi teks lainnya.