GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Perintah Sed di Linux dengan Contoh

SED disingkat 'Stream Editor' adalah editor aliran teks yang kuat yang dapat melakukan banyak fungsi pada file yang mencari, menemukan dan mengganti dan penyisipan. Perintah sed adalah perintah sadar ekspresi reguler, artinya ia dapat memahami ekspresi reguler yang diberikan padanya.

Padahal, SED terutama atau terutama digunakan untuk substitusi teks. Dengan bantuan SED, kita dapat mengedit file tanpa membukanya, yang akan jauh lebih cepat dan lebih cepat untuk menemukan dan mengganti sesuatu dalam file, daripada membuka file dan mengubahnya.

Dalam tutorial ini, kita akan mempelajari perintah SED dengan contoh yang mudah digunakan dan dipahami di shell Linux kita.

Sintaks Perintah Sed

Sintaks perintah Sed cukup sederhana untuk dipahami tetapi sangat kuat digunakan. Berikut sintaks dasar SED sebagai berikut :

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

Pertimbangkan file teks di bawah ini ('content.txt') sebagai input untuk perintah sed example.

$ cat > content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

Berikut adalah contoh sed yang paling sering digunakan sebagai berikut.

1. Mengganti String (kata atau karakter)

Sed dapat digunakan untuk mencari dan mengganti string (kata atau karakter) pada input. Opsi s digunakan untuk mengganti string. Secara default, perintah sed hanya menggantikan kemunculan pertama string dalam sebuah baris.

Perintah berikut menggantikan kata 'lorem' dengan 'Lorem' di file 'content.txt' untuk kemunculan pertama di setiap baris:

$ sed 's/lorem/Lorem/' content.txt

Di sini 'lorem' adalah string pencarian dan 'Lorem' adalah string pengganti.

Output
$ sed 's/lorem/Lorem/' content.txt
Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

2. Ganti semua kemunculan string dalam file

Untuk mencari dan mengganti semua kemunculan string dalam file, gunakan /g bendera (pengganti global).

Pada perintah berikut, /g flag digunakan untuk mengganti semua kemunculan string 'lorem' dengan 'Lorem' pada file 'content.txt'.

$ sed 's/lorem/Lorem/g' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

3. Mengganti kemunculan ke-n dari suatu pola dalam sebuah baris

Perintah sed dapat digunakan dengan /1 ,/2 atau n (nomor apa saja) untuk menggantikan kemunculan string pertama, kedua, atau ke-n dalam satu baris.

Perintah berikut menggantikan kemunculan kedua (2) kata 'lorem' dengan 'Lorem' di setiap baris.

$ sed 's/lorem/Lorem/2' content.txt

lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

Mirip dengan perintah tr, sed dapat mengganti semua kemunculan karakter di set1 dengan karakter yang sesuai di set2 menggunakan y/set1/set2/ .

$ echo 'a for apple' | sed -e 'y/af/AF/
Output
A For Apple

4. Ganti dari kemunculan ke-n ke semua kemunculan di setiap baris

Kita bisa menggunakan kombinasi /1 ,/2 atau n (nomor apa saja) dan /g untuk mengganti semua pola dari kemunculan ke-n string di setiap baris.

Pada contoh berikut, semua kemunculan string 'lorem' akan diganti dengan 'Lorem' dari kemunculan ke-2 di setiap baris:

$ sed 's/lorem/Lorem/2g' content.txt
lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.

5. Cari dan ganti string pada nomor baris tertentu

Dengan sed, kita dapat membatasi fungsi hanya untuk mengganti string pada nomor baris tertentu.

Pada perintah berikut, kita dapat menemukan bahwa hanya baris kedua yang diganti dengan string 'Lorem'.

$ sed '2 s/lorem/Lorem/' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

6. Menampilkan sebagian teks dari sebuah file

Menggunakan perintah sed Anda dapat melihat beberapa bagian dari file daripada seluruh file. -n opsi digunakan untuk menekan pencetakan semua konten dan p opsi ini digunakan untuk mencetak baris tertentu.

Perintah berikut akan mencetak baris dari 2 hingga 4:

$ sed -n 2,4p content.txt
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

7. Tampilkan semua konten kecuali baris tertentu

Perintah Sed memungkinkan menampilkan semua isi file kecuali baris tertentu. Pada perintah berikut tampilkan semua konten pada file 'content.txt' kecuali baris 1 dan 2:

$ sed 1,2d content.txt
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

8. Tampilkan semua garis kecuali garis pencocokan pola

Kita dapat menggunakan perintah sed berikut untuk menghapus baris yang memiliki pola pencarian yang disebutkan. Pada output, baris dengan "belajar" dihapus karena cocok dengan pola pencarian.

$ sed '/learn/d' content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

9. Tampilkan baris yang diganti

Untuk mencetak baris yang diganti, kami menggunakan /p tandai bersama dengan -n .

Pada output, kita bisa melihat tidak ada baris terakhir karena tidak memiliki pola pencarian 'lorem'.

$ sed -n 's/lorem/Lorem/p' content.txt

Lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

Contoh lainnya dari bendera 'p' dan 'n'

Cetak baris pertama

$ sed -n '1p' content.txt

Rentang garis cetak

$ sed -n '1,4p' content.txt

Cetak beberapa baris

$ sed -n '1p;4p' content.txt

Cetak file

$ sed -n 'p' content.txt

Cetak berisi regex atau kata

$ sed -n '/RedHat/p' content.txt

Cetak jika berisi angka

$ sed -n '/[0-9]/p' content.txt

Cocokkan ekspresi reguler dan ganti

$ sed -n 's/^L/Matched--&/p' content.txt
Output
Matched--Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Matched--Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Matched--Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

Gunakan sed seperti grep

Perintah sed berikut akan mencari 'root' pengguna di file '/etc/passwd':

$ sed -n '/root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

10. Gabungkan perintah SED

Jika kita harus melakukan beberapa ekspresi sed maka kita perlu menggunakan e opsi untuk merangkai perintah sed.

Mari kita ambil contoh, untuk mengganti semua kemunculan "lorem" dengan "Lorem" dan menghapus baris yang cocok dengan pola pencarian.

$ sed -e 's/lorem/Lorem/g' -e '/learn/d' content.txt

Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.

11. Sisipkan baris kosong setelah setiap baris

Menggunakan G pilihan Anda dapat menyisipkan satu atau beberapa baris kosong dalam file.

Perintah berikut menyisipkan satu baris kosong di antara baris:

$ sed G content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

Untuk menyisipkan dua baris kosong, jalankan perintah di bawah ini:

$ sed 'G;G' content.txt

lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.

lorem ipsum is highly used by designers. lorem ipsum is great for developers.

lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.

learn more about dummy text.

11. Edit dan buat salinan cadangan dari file asli

Sed memungkinkan untuk mengedit file dan pada saat yang sama membuat salinan cadangan dari file asli. Kami menggunakan 'i.' untuk nama file cadangan dan -e mengedit.

Perintah berikut membuat cadangan file asli 'content.txt' sebagai 'content.txt.bak'

$ sed -i.bak -e 's/lorem/Lorem/g' content.txt
Results
$ cat content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
learn more about dummy text.
$ cat content.txt.bak
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

12. Menghapus garis dengan pola

Menggunakan perintah sed ini, Anda dapat menghapus baris yang dimulai dengan string tertentu &diakhiri dengan string lain. Pada output berikut, baris dengan awalan 'lorem' dan diakhiri dengan 'teks'. dihapus:

$ sed -e 's/^lorem.*text.$//g' content.txt
Output
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.

13. Menambahkan String ke baris

Kita dapat menjalankan perintah berikut untuk menambahkan beberapa konten sebelum setiap baris menggunakan regex.

Pada output berikut, kita dapat melihat 'Di sini' ditambahkan di depan setiap baris.

$ sed -e 's/.*/Here &/' content.txt
Here lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
Here lorem ipsum is highly used by designers. lorem ipsum is great for developers.
Here lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
Here learn more about dummy text.

Sisipkan string sebelum setiap baris:

$ sed 'i \inserted line' content.txt
inserted line
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
inserted line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
inserted line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
inserted line
learn more about dummy text.

Tambahkan string setelah setiap baris:

$ sed 'a \Appended line' content.txt
Lorem ipsum is a dummy text. Lorem ipsum has been the industry's standard dummy text.
Appended line
Lorem ipsum is highly used by designers. Lorem ipsum is great for developers.
Appended line
Lorem ipsum is used for dummy text. Lorem ipsum doesn't have meaning.
Appended line
learn more about dummy text.
Appended line

14. Ekstrak nama pengguna dari file /etc/passwd

Perintah sed dapat dengan mudah digunakan untuk mendapatkan semua daftar semua nama pengguna dari file '/etc/passwd'.

Perintah sed berikut akan mengekstrak semua nama pengguna linux yang tersedia:

$ sed 's/\([^:]*\).*/\1/' /etc/passwd
root
daemon
bin
sys
sync
man
lp
news
uucp
proxy
backup
list
gnats
nobody
systemd-network
systemd-resolve
syslog
messagebus
uuidd
debian-spamd
admin

15. Cetak baris tanpa baris komentar (#) &baris kosong

Cetak tanpa komentar (#) baris dan baris kosong sederhana dengan sed.

Kita dapat menjalankan perintah berikut untuk mencetak semua baris yang tidak mengandung simbol komentar (#) dan semua baris kosong.

$ sed -e 's/#.*//;/^$/d' content.txt

Untuk menghapus hanya baris yang dikomentari:

$ sed -e 's/#.*//' content.txt

16. Ekstrak semua alamat ip dengan sed dari string

Mari kita periksa cara mengekstrak alamat IP menggunakan perintah sed dengan regex. Saya telah menambahkan beberapa alamat IP ke 'content.txt' untuk pengujian.

$ cat content.txt
lorem ipsum is a dummy text. lorem ipsum has been the industry's standard dummy text.
lorem ipsum is highly used by designers. lorem ipsum is great for developers.
lorem ipsum is used for dummy text. lorem ipsum doesn't have meaning.
learn more about dummy text.
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Sekarang mari gunakan regex untuk mengekstrak alamat IP dari file 'content.txt' sebagai berikut:

$ sed '/\n/!s/[0-9.]\+/\n&\n/;/^\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\n/P;D' content.txt
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Saya menemukan perintah mudah lainnya untuk mendapatkan hasil yang sama, periksa di bawah ini:

$ sed -n '/[0-9]/p' content.txt.bak
122.65.49.2
221.11.165.233
219.158.9.97
219.158.19.137

Kita juga dapat menggabungkan sed dengan perintah lain menggunakan pipa (|), periksa contoh di bawah ini:

$ ip addr | sed -n '/inet/p' | sed -e 's/  */ /g' | cut -d ' ' -f3
127.0.0.1/8
::1/128
75.208.225.10/24
2600:3c02::e03c:92ff:fe60:d7e2/64
fe80::f03c:92ef:fe60:d7e2/64

17. Arahkan ulang dan tulis ke file

w flag dapat digunakan untuk menulis output ke file, alih-alih mencetak pada output standar. w perintah membutuhkan nama file yang outputnya akan ditulis.

Perintah sed berikut akan mengarahkan output ke file baru 'rootpwd.txt':

$ sed -n '/root/w rootpwd.txt' /etc/passwd
$ cat rootpwd.txt
root:x:0:0:root:/root:/bin/bash

Kesimpulan

Dalam tutorial perintah Linux ini, kita mempelajari sintaks dasar perintah sed dan dengan contoh sed yang paling umum dan banyak digunakan. Seseorang dapat menggunakan sed di bash atau skrip shell untuk melakukan tugas otomatis yang berbeda dalam manipulasi teks dan operasi sed di shell Linux. Dengan tutorial ini, seseorang dapat dengan mudah memahami sed dan segera mulai menerapkannya saat diperlukan. Jika ada pertanyaan, saran, masukan silahkan tulis di kolom komentar di bawah.


Linux
  1. Cara Menggunakan Perintah Hexdump Linux dengan Contoh Praktis

  2. Cara Menggunakan Pipes dan Named Pipes di Linux (dengan Contoh)

  3. Cara Menggunakan Perintah RMmod Di Linux Dengan Contoh

  1. Perintah SCP di Linux:Cara Menggunakannya, dengan Contoh

  2. Cara menggunakan perintah Vmstat di Linux dijelaskan dengan contoh

  3. Cara Menggunakan Perintah Dig di Linux dengan Contoh

  1. Cara Menggunakan Perintah su di Linux dengan Contoh

  2. Cara menggunakan Perintah Shutdown Linux dengan Contoh

  3. Cara Menggunakan Perintah w di Linux dengan Contoh