GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menggunakan Perintah SED untuk Menemukan dan Mengganti String di File

Pengantar

Sed adalah singkatan dari S tream ED itu Ini adalah perintah Linux yang digunakan untuk mencari, menemukan dan mengganti, atau menyisipkan dan menghapus kata dan baris dalam file teks.

Kasus penggunaan paling umum dari perintah Sed adalah menemukan dan mengganti string dalam file. Saat menggunakan perintah Sed, Anda dapat mengedit file tanpa membukanya.

Artikel ini akan menjelaskan detail penggunaan perintah Sed untuk menemukan dan mengganti string dalam file.

Semua contoh dalam tutorial ini dijalankan di Ubuntu 20.04.

Temukan dan Ganti

Secara default, Sed diinstal di sebagian besar distribusi Linux. Anda dapat memverifikasi instalasi Sed pada sistem Linux Anda dengan menjalankan:

$ sed --v

Outputnya akan seperti ini:

Sintaks dasar menggunakan perintah Sed untuk menemukan dan mengganti teks adalah:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

Di mana:

-i:Opsi ini membuat perintah Sed mengedit file di tempatnya alih-alih menulis output ke output standar.

s:Itu singkatan dari pengganti.

/ /:Karakter pembatas.

g:Ini adalah bendera pengganti Global.

FILE:File yang ingin Anda manipulasi dengan perintah Sed.

Sangat disarankan untuk menempatkan pola pencarian, pola penggantian, dan argumen lainnya dalam tanda kutip.

Sebagai contoh, berikut adalah file teks yang digunakan untuk demonstrasi:

567 Test test test
test /bin/zsh linuxways.net testbar 789

Untuk mengganti semua kata 'test' dengan kata 'linux', jalankan perintah berikut:

$ sed -i 's/test/linux/g' test.txt

Keluaran:

Jika Anda tidak menggunakan flag g, hanya kemunculan pertama dari pola pencarian di setiap baris yang diganti:

$ sed -i 's/test/linux/' test.txt

Keluaran:

Seperti yang Anda lihat, pada contoh sebelumnya, pengujian substring di dalam string testbar juga ditempatkan. Jika Anda tidak ingin mengganti substring dalam pola pencarian, letakkan pola pencarian di antara dua batas kata \b:

$ sed -i 's/\btest\b/linux/g' test.txt

Keluaran:

Untuk membuat pencocokan pola pencarian huruf besar-kecil, mari gunakan tanda I:

$ sed -i 's/test/linux/gI' test.txt

Keluaran:

Di dunia Linux, kita akan menemukan banyak kasus penggunaan yang memiliki karakter pembatas dalam file teks. Kita harus menggunakan garis miring terbalik \ untuk memecahkan karakter pembatas. Misalnya, untuk mengganti /bin/zsh dengan /usr/bin/bash, jalankan:

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt

Keluaran:

Temukan dan Ganti Rekursif

Dalam banyak kasus, Anda ingin mencari direktori secara rekursif untuk file yang memiliki string tertentu dan mengganti string tersebut di semua file.

Misalnya, perintah berikut akan mencari dan mengganti string 'way' dengan 'road' di semua file di direktori saat ini.

$ find . -type f -exec sed -i 's/way/road/g' {} +

Jika nama file mengandung karakter spasi, mari gunakan opsi -print0:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Untuk mencari dan mengganti string hanya pada file yang memiliki ekstensi tertentu, jalankan:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/way/road/g'

Kesimpulan

Anda telah melalui beberapa contoh umum menggunakan perintah Sed. Mencari dan mengganti string teks dalam file dengan perintah Sed tidak serumit yang Anda bayangkan.

Jika Anda memiliki masalah, beri tahu saya di bagian komentar.


Ubuntu
  1. Menemukan File di Command Line (Cara)

  2. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  3. Cara Menggunakan Perintah find Linux untuk Menemukan File

  1. Gunakan Perintah SED untuk Menemukan dan Mengganti String di File - Bagaimana cara melakukan tugas ini di Ubuntu?

  2. Bagaimana Cara Mengganti String Dalam File?

  3. Bagaimana Cara Menggunakan Sed Untuk Mengganti String Multi-baris?

  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. Menggunakan grep dan sed untuk mencari dan mengganti string

  3. Cara mengganti string dalam banyak file di baris perintah linux