GNU/Linux >> Belajar Linux >  >> Linux

Perintah Linux sed:Cara Menggunakan Editor Streaming

Pendahuluan

SED adalah editor aliran teks yang digunakan pada sistem Unix untuk mengedit file dengan cepat dan efisien. Alat ini menelusuri, mengganti, menambah, dan menghapus baris dalam file teks tanpa membuka file di editor teks.

Pelajari cara menggunakan sed perintah dan opsinya melalui contoh yang mudah diikuti.

Sintaks Linux

Sintaks utama untuk menggunakan Linux sed perintahnya adalah:

sed OPTIONS... [SCRIPT] [INPUTFILE...]

Opsi Linux yang dipilih

Anda dapat menjalankan sed dengan opsi baris perintah berikut:

-b , --binary Buka file input dalam mode biner untuk mempertimbangkan baris yang akan berakhir pada feed baris.
--debug Beralih ke mode debug untuk mencetak input dalam bentuk kanonik dan membubuhi keterangan eksekusi program.
--follow-symlinks Edit tujuan akhir jika file yang ditentukan adalah tautan simbolik. Ini hanya berfungsi jika digabungkan dengan -i pilihan.
--help Menampilkan informasi penggunaan.
--i , --in-place [=SUFFIX] Lakukan pengeditan di tempat dengan menimpa file asli.
--posix Nonaktifkan semua ekstensi ke POSIX sed untuk menyederhanakan penulisan skrip portabel.
--version Tampilkan versi sed berjalan di sistem.
-E , -r , --regexp-extended Gunakan ekspresi reguler yang diperluas.
-e <em>script</em> , --expression=<em>script</em> Tambahkan skrip tertentu untuk dijalankan dengan perintah.
-f <em>script-file</em> Tambahkan konten file skrip tertentu untuk dijalankan dengan perintah.
-l <em>N</em> , --line-length=<em>N</em> Tentukan panjang pembungkus baris yang diinginkan untuk l perintah (nilai default adalah 70).
-n , --quiet , --silent Nonaktifkan pencetakan keluaran.
-s , --separate Melihat file yang ditentukan sebagai terpisah, bukan sebagai satu aliran panjang yang berkelanjutan.
--sandbox Nonaktifkan menjalankan program eksternal dan operasikan hanya pada file input pada baris perintah.
-u , --unbuffered Minimalkan buffer input dan output.
-z , --null-data , --zero-terminated Melihat input sebagai kumpulan baris yang masing-masing diakhiri dengan byte nol.

Contoh Linux sed

Di bawah ini kami tunjukkan sepuluh sed . yang umum digunakan perintah, contoh, dan sintaks.

Untuk tutorial ini, kami membuat file sampel dengan nama foxinbox.tx t dengan isi sebagai berikut:

Knox in box.
Fox in socks.

Knox on fox in socks in box.

Socks on Knox and Knox in box.
Fox in socks on box on Knox.

Perhatikan bahwa sed tidak mempengaruhi file sumber kecuali diinstruksikan. Sebagai gantinya, perintah tersebut menampilkan perubahan yang dibuat oleh perintah yang diberikan dalam outputnya.

Untuk menimpa file asli, gunakan -i pilihan untuk menyimpan modifikasi. Namun, praktik seperti itu tidak disarankan sebelum menguji keluaran perintah.

Atau, simpan hasil edit ke file lain (atau baru). Arahkan ulang output dengan menambahkan > newfilename.txt di akhir perintah.

Ganti String Menggunakan Perintah sed

Linux sed Perintah ini paling sering digunakan untuk mengganti teks. Ini mencari pola yang ditentukan dalam file dan menggantinya dengan string yang diinginkan.

Untuk mengganti teks menggunakan sed , gunakan perintah pengganti s dan pembatas (dalam kebanyakan kasus, garis miring - / ) untuk memisahkan bidang teks.

Oleh karena itu, sintaks untuk mengganti teks adalah:

sed 's/old_string/new_string/' filename.txt

Ganti old_string dengan teks yang ingin Anda ganti dan new_string dengan teks yang ingin Anda ubah.

Misalnya, untuk mengganti instance box dengan kata bin , jalankan:

sed 's/box/bin/' foxinbox.txt

Outputnya menunjukkan teks dengan kata-kata yang diganti, seperti pada gambar di bawah ini.

Ganti Semua Kemunculan String Menggunakan Perintah sed

Secara default, sed hanya menggantikan kemunculan pertama dari string yang ditentukan di setiap baris. Ini mencari contoh pertama dari kata yang ditentukan dalam satu baris, menggantinya, dan pindah ke baris berikutnya.

Dengan beberapa contoh kata box di baris yang sama, perintah hanya menggantikan yang pertama.

Jika Anda memiliki beberapa contoh kata yang sama dalam satu baris, tambahkan g tandai ke perintah untuk mengubah semuanya.

Perintah untuk mengganti setiap kemunculan string yang diberikan dalam teks adalah:

sed 's/old_string/new_string/g' filename.txt

Untuk mengganti kata box dengan kata bin dalam file foxinbox.txt setiap kali, ketik:

sed 's/box/bin/g' foxinbox.txt

Output di atas menunjukkan bahwa perintah menggantikan semua instance dari kata box .

Ganti Kejadian Tertentu dalam Baris Menggunakan Perintah sed

sed perintah memungkinkan Anda memilih kemunculan string tertentu yang ingin Anda ganti dalam setiap baris. Untuk melakukannya, tambahkan bendera nomor seperti 1 , 2 , dll.:

sed 's/old_string/new_string/#' filename.txt

Misalnya, untuk mengganti kemunculan kedua dari kata box di setiap baris teks dengan kata bin , gunakan perintah ini:

sed 's/box/bin/2' foxinbox.txt

Perintah melewatkan tiga contoh kata karena mereka berada di baris pertama dan hanya menggantikan satu kata di akhir.

Hanya Cetak Baris Dengan Teks Pengganti

Secara default, sed perintah mencetak seluruh konten file, bersama dengan teks pengganti dalam outputnya. Jika Anda memiliki banyak teks dan ingin fokus pada baris dengan perubahan yang diterapkan, tambahkan atribut yang diperlukan ke perintah.

Untuk mencetak hanya baris yang memiliki substitusi di bawah kondisi yang diberikan, gunakan sintaks:

sed -n 's/old_string/new_string/p' filename.txt

-n opsi menonaktifkan pencetakan otomatis, sedangkan perintah pengganti p menginstruksikan sed untuk mencetak baris di mana substitusi terjadi.

Anda dapat menambahkan p perintah ke perintah pengganti lainnya, seperti pada contoh di bawah ini:

sed -n 's/box/bin/2p' foxinbox.txt

Perintah tersebut menggantikan contoh kedua dari kata box dalam satu baris dan mencetak baris tempat perubahan terjadi. Pada gambar di bawah, Anda hanya melihat satu baris dengan substitusi yang diterapkan.

Ganti String Menggunakan Perintah sed dan Abaikan Huruf Besar

Secara default, sed perintah peka huruf besar-kecil. Misalnya, konten berikut berisi kata fox dengan huruf pertama besar dan kecil:

Knox in box.
Fox in socks.

Knox on fox in socks in box.

Socks on Knox and Knox in box.
Fox in socks on box on Knox.

Untuk mengganti semua contoh kata rubah , jangan jalankan perintah biasa:

sed 's/fox/cow/' foxinbox.txt

Hasil dari perintah tersebut hanya mengubah kemunculan kata fox di mana itu sepenuhnya huruf kecil:

Untuk mengabaikan huruf besar/kecil saat mengganti teks, tambahkan i subcommand di akhir perintah:

sed 's/old_string/new_string/i' filename.txt

Oleh karena itu, perintah untuk mengubah huruf besar dan kecil dari kata rubah pada teks di atas adalah:

sed 's/fox/cow/i' foxinbox.txt

Outputnya menunjukkan perintah mengubah ketiga contoh string yang ditentukan.

Ganti String di Baris Tertentu Menggunakan Perintah sed

sed perintah memungkinkan Anda untuk mengganti string dalam baris tertentu dengan menambahkan nomor baris sebagai awalan ke s sub-perintah:

sed '# s/old_string/new_string/' filename.txt

Untuk menguji fitur ini pada contoh foxinbox.txt file, ganti kata socks dengan sandals hanya di baris keempat (4 ) dari teks menggunakan perintah:

sed '4 s/socks/sandals/' foxinbox.txt

Outputnya menunjukkan bahwa contoh pertama dari kata socks pada baris kedua tetap sama, sedangkan kata yang sama telah diganti dengan sandals di baris keempat.

Ganti String Hanya di Rentang Garis Tertentu Menggunakan Perintah sed

Untuk mengganti beberapa contoh string dalam rentang baris, tetapi bukan seluruh teks, tentukan rentang tempat Anda ingin sed untuk menggantikan. Sintaksnya adalah:

sed '#,# s/old_string/new_string/' filename.txt

Ganti # pertama dengan nomor baris awal dan # second kedua dengan nomor baris terakhir yang ingin Anda sertakan.

Misalnya, untuk mengganti dua kata terakhir dari kata kaus kaki dalam file foxinbox.txt (terletak di baris keempat dan keenam) dengan tulisan sandals , Anda akan menjalankan:

sed '4,6 s/socks/sandals/' foxinbox.txt

Hapus Baris Tertentu Menggunakan Perintah sed

Untuk menghapus baris dari file dengan sed perintah, gunakan d subperintah dan sintaksnya:

sed '#d' filename.txt

Tentukan nomor baris yang ingin Anda hapus alih-alih hash (# ) simbol dan jalankan perintah.

Misalnya, untuk menghapus baris kedua dari foxinbox.txt file, ketik:

sed '2d' foxinbox.txt

Hapus Garis Dalam Rentang Garis Tertentu Menggunakan Perintah sed

Untuk menghapus beberapa baris dalam rentang baris menggunakan sed perintah, ikuti sintaks:

sed '#,#d' filename.txt

Ganti simbol hash dengan awal dan akhir rentang garis. Misalnya:

sed '2,4d' foxinbox.txt

Perintah di atas menghapus baris 2, 3, dan 4 dari file.

Hapus Dari Spesifik ke Baris Terakhir Menggunakan Perintah sed

Untuk menghapus baris dari nomor baris tertentu ke baris terakhir, gunakan perintah:

sed '#,$d' filename.txt

Yaitu, untuk menghapus semuanya dari baris 3 hingga akhir foxinbox.txt , jalankan perintah ini:

sed '3,$d' foxinbox.txt

Linux
  1. Cara menggunakan perintah sed Linux

  2. Cara menggunakan perintah grep Linux

  3. Cara Menggunakan Perintah id di Linux

  1. Cara menggunakan perintah history di Linux

  2. Cara Menggunakan Perintah sejarah Linux

  3. Cara menggunakan perintah "layar" di Linux

  1. Cara Menggunakan Perintah md5sum di Linux

  2. Cara Menggunakan Perintah Linux xargs

  3. Cara Menggunakan Perintah tee Linux