GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh Perintah Sed (Stream Editor)

Sed adalah editor aliran dalam sistem operasi mirip UNIX yang digunakan untuk memfilter dan mengubah teks. Sed berasal dari editor baris dasar 'ed', editor yang akan Anda temukan di setiap sistem Unix tetapi jarang digunakan karena antarmuka pengguna yang sulit.

Bagaimana sed Bekerja?

Karena sed adalah editor aliran, ia bekerja pada aliran data yang diterimanya dari stdin, seperti melalui pipa, menulis hasilnya sebagai aliran data di stdout (sering kali layar desktop). Kita dapat mengarahkan output ini ke file . Sed biasanya tidak memodifikasi file input asli; sebagai gantinya, kami dapat mengirim konten file kami melalui pipa untuk diproses oleh sed. Ini berarti kami tidak perlu memiliki file di disk dengan data yang ingin Anda ubah, ini sangat berguna jika Anda memiliki data yang berasal dari proses lain daripada yang sudah ditulis dalam file.

Sintaks sed

# sed [option] commands [input-file]

Pada postingan kali ini kita akan membahas beberapa contoh praktis dari perintah sed, kita akan melakukan banyak operasi sed pada file 'passwd', jadi copy dulu file '/etc/passwd' ke folder /tmp.

# cp /etc/passwd /tmp/

Contoh 1:Menghapus semua Baris dengan sed

# cat /tmp/passwd | sed 'd'

Perintah di atas mengirim seluruh isi file /tmp/passwd melalui pipa ke sed. Perlu diingat file /tmp/passwd tidak diubah sama sekali. Sed hanya membaca isi file dan kami tidak menyuruhnya untuk menulis ke file, hanya membaca darinya. Hasil perintah pengeditan pada setiap baris dicetak ke output standar. Dalam hal ini, tidak ada yang tercetak di layar karena kami telah menggunakan opsi 'd' untuk menghapus setiap baris.

Contoh 2:Memanggil sed dengan opsi '-e' (menambahkan skrip ke perintah yang akan dieksekusi)

Alih-alih memanggil sed dengan mengirimkan file ke sana melalui pipa, kita dapat menginstruksikan sed untuk membaca data dari file seperti yang ditunjukkan pada contoh di bawah ini.

# sed -e 'd' /tmp/passwd
#

Memanggil sed dengan cara ini secara eksplisit mendefinisikan perintah pengeditan sebagai skrip sed yang akan dieksekusi pada file input /tmp/passwd. Script hanyalah perintah pengeditan satu karakter di sini, tetapi bisa jauh lebih besar.

Kami juga dapat mengarahkan output standar dari perintah sed ke file.

# sed -e 'd' /tmp/passwd > /tmp/new-passwd

Contoh 3:Mencetak baris menggunakan sed (-n flag &p perintah)

Bendera '-n' menonaktifkan pencetakan otomatis sehingga sed hanya akan mencetak baris ketika secara eksplisit diperintahkan untuk melakukannya dengan perintah 'p'.

# cat /tmp/passwd | sed 'p' | head -5
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Seperti yang kita lihat di atas jika kita menentukan perintah pengeditan 'p' tanpa tanda '-n', sed akan mencetak baris duplikat. Jadi untuk menampilkan baris unik gunakan flag '-n' dengan perintah p di sed. Contohnya ditunjukkan di bawah ini:

# cat /tmp/passwd | sed -n 'p' | head -5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Contoh 4:Mengedit file Sumber dengan menggunakan opsi ‘-i’

Perintah sed secara default tidak mengedit file asli atau sumber untuk keamanan kita tetapi dengan menggunakan opsi '-i' file sumber dapat diedit.

# sed -i '1d' /tmp/passwd

Perintah di atas akan menghapus baris pertama dari file sumber /tmp/passwd.

Contoh 5:Ambil cadangan file sumber sebelum mengedit

Ketika kita menggunakan opsi ‘-i’ pada perintah sed maka itu menjadi sangat beresiko karena akan langsung mengedit file sumber, jadi lebih baik mengambil cadangan file sumber sebelum mengedit, contoh di bawah ini.

# sed -i.bak '1d' /tmp/passwd
# ls -l /tmp/passwd*
-rw-r--r-- 1 root root 2229 Nov 24 22:36 /tmp/passwd
-rw-r--r-- 1 root root 2261 Nov 24 22:35 /tmp/passwd.bak

Pada perintah sed di atas, baris pertama file /tmp/passwd akan dihapus tetapi sebelum itu perintah sed mengambil cadangan /tmp/passwd sebagai /tmp/passwd.bak.

Contoh 6:Menghapus garis dengan menentukan rentang.

Menghapus 5 baris pertama file /tmp/passwd.

# cat /tmp/passwd | sed '1,5d'

Contoh 7:Hapus baris kosong dari sebuah file

# cat /tmp/detail.txt 
245
678

linux
unix

suse

Dalam file details.txt kita memiliki dua baris kosong, gunakan perintah di bawah ini untuk menghapus baris kosong.

# sed '/^$/d' /tmp/detail.txt
245
678
linux
unix
suse

Contoh 8:Menghapus baris yang berisi string

Misalkan kita ingin menghapus baris dari file /tmp/passwd yang berisi kata 'games'.

# sed '/games/d' /tmp/passwd

Contoh 9:Cari dan Ganti string dalam file

Misalkan Anda ingin mengganti 'root' dengan 'Admin', contoh di bawah ini:

# sed 's/root/Admin/' /tmp/passwd

Sangat penting untuk dicatat bahwa sed hanya menggantikan kemunculan pertama pada sebuah baris. Jika string 'root' muncul lebih dari satu kali dalam satu baris, hanya kecocokan pertama yang akan diganti. Untuk mengganti setiap string dalam file dengan yang baru, bukan hanya kemunculan pertama, untuk membuat substitusi secara global tambahkan huruf 'g' ke akhir perintah seperti yang ditunjukkan di bawah ini:

# sed 's/root/Admin/g' /tmp/passwd

Contoh 10:Substitusi ganda menggunakan opsi -e

Misalkan kita ingin mengganti string 'root' dengan 'Admin' dan string 'bash' dengan 'sh'. Contoh ditunjukkan di bawah ini:

# cat /tmp/passwd | sed -e 's/root/Admin/g' -e 's/bash/sh/g'


Linux
  1. Perintah mv di Linux:7 Contoh Penting

  2. Contoh Perintah ekor Linux

  3. Pengantar sed (Stream Editor):Contoh Perintah sed yang berguna

  1. ln Contoh Perintah di Linux

  2. File Contoh Perintah di Linux

  3. sed Contoh Perintah di Linux

  1. Perintah Linux sed:Cara Menggunakan Editor Streaming

  2. Contoh Perintah gzip di Linux

  3. lebih banyak Contoh Perintah di Linux