GNU/Linux >> Belajar Linux >  >> Linux

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

Pengantar Editor sed

Istilah sed singkatan dari editor aliran . Sed dapat mengambil inputnya dari standar masuk, menerapkan pengeditan yang diminta pada aliran, dan secara otomatis memasukkan hasilnya ke standar keluar. Sintaks sed memungkinkan file input ditentukan pada baris perintah.

Anda tidak perlu berinteraksi dengan editor sed saat sedang berjalan; oleh karena itu, ini juga disebut editor batch. Ini berbeda dengan editor seperti vi dan ed, yang bersifat interaktif. Karena sed tidak memerlukan interaksi, Anda dapat menempatkan perintah sed dalam skrip. Anda dapat memanggil file skrip dan menjalankannya terhadap file data untuk melakukan operasi pengeditan berulang.

Format Perintah

Berikut ini menunjukkan sintaks untuk perintah sed:

# sed [options] 'action [args]' files [ > outfile]

Editor sed mampu melakukan penggantian pola teks dan penghapusan pola teks menggunakan sintaks ekspresi reguler. Ini adalah karakter ekspresi reguler yang sama yang digunakan oleh grep.

Perintah sed menawarkan kemampuan yang merupakan perpanjangan dari pengeditan teks interaktif. Jika Anda perlu mencari dan mengganti string teks dalam sejumlah besar file, sed adalah yang paling berguna.

Mengedit Perintah

Editor sed menggunakan perintah pengeditan (ditunjukkan pada Tabel) yang serupa dengan yang akan Anda gunakan untuk vi dan ed.

Perintah Fungsi
d Menghapus baris
p Mencetak baris
r Membaca file
s Mengganti satu string untuk yang lain
w Menulis ke file

Perintah sed memiliki dua opsi:

Opsi Fungsi
-n Menekan keluaran default
-f Membaca perintah sed dari file skrip

Contoh data yang digunakan dalam contoh

Contoh berikut menjalankan perintah sed terhadap file bernama "data.txt". Isi dari file data.txt adalah sebagai berikut.

# cat data.txt
northwest	NW	Joel Craig	    10
western  	WE	Sharon Kelly	40
southwest	SW	Chris Foster	33
southern 	SO	May Chin	    45
southeast	SE	Derek Johnson	3
eastern  	EA	Susan Beal	    34
northeast	NE	TJ Nichols	    67
north    	NO	Val Shultz	    91
central  	CT	Sheri Watson	44

Menggunakan sed untuk Mencetak Teks

Contoh 1 :Mencetak rentang garis

Contoh berikut menunjukkan penggunaan perintah p (print), yang mencetak rentang baris ke stdout. Rentang ditentukan oleh alamat awal diikuti dengan koma dan kemudian alamat akhir. Output default sed adalah setiap baris yang dibacanya. Untuk menekan output default, gunakan opsi -n.

# sed -n '3,5p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3

Contoh 2 :Mencetak garis yang berisi pola tertentu

Perintah berikut mencetak semua baris dengan pola barat di dalamnya. Gunakan garis miring (/) untuk membatasi ekspresi reguler.

# sed -n '/west/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33

Contoh 3 :Mencetak garis dengan banyak pola

Perintah berikut mencetak baris pertama yang berisi pola barat, hingga dan termasuk baris berikutnya yang berisi pola selatan.

# sed -n '/west/,/southern/p' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45

Contoh 4 :Mencetak garis dengan pola dan semua garis setelah itu

Perintah berikut mencetak baris pertama yang berisi pola Chris, hingga baris terakhir file.

# sed -n '/Chris/,$p' data.txt 
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Contoh 5:Fungsionalitas mirip dengan grep

Polanya mungkin berisi karakter ekspresi reguler yang digunakan oleh grep. Contoh berikut mencetak semua baris yang dimulai dengan s dan diakhiri dengan 5.

# sed -n '/^s.*5$/p' data.txt 
southern        SO      May Chin            45

Menggunakan sed untuk Mengganti Teks

Perintah Contoh Mengedit Tindakan
s sed s/x/y/option Cari dan ganti. Pola pencarian x diganti dengan pola y. Pencarian dan pola penggantian adalah ekspresi reguler dalam banyak kasus, dan perilaku pencarian dan penggantian dapat dipengaruhi melalui berbagai opsi.
y sed y/abc/xyz/ Ganti setiap karakter dari himpunan karakter sumber dengan karakter yang memiliki posisi yang sama pada himpunan karakter tujuan.

Contoh 1 :Cari dan ganti pola tertentu

s perintah memungkinkan operasi pencarian dan substitusi terjadi pada teks. Perintah menggunakan pencarian pola dan penggantian string literal. Karakter string pengganti diambil secara harfiah tanpa ekspansi metakarakter.

# sed 's/3/X/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        X3
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Perintah sed memeriksa setiap baris file dan mengganti kemunculan pertama dari string lama dengan string baru. Kemunculan berikutnya dari string lama dalam baris yang sama dibiarkan tidak berubah.

Contoh 2 :Mencari dan mengganti pola tertentu secara global

Contoh berikut menunjukkan g (global) perintah dengan s (cari dan ganti) perintah, dan itu menggantikan semua kemunculan string lama dengan string baru.

# sed 's/3/X/g' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        XX
southern        SO      May Chin            45
southeast       SE      Derek Johnson       X
eastern         EA      Susan Beal          X4
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Contoh 3 :Cari dan substitusikan dengan pola pencarian yang termasuk dalam substitusi

Terkadang dengan pencarian dan penggantian, string lama akan menjadi bagian dari string pengganti baru, yang dapat Anda selesaikan dengan menempatkan &(ampersand) di string pengganti. Lokasi &menentukan lokasi string lama dalam string pengganti.

Tujuan dari contoh berikut adalah untuk menulis perintah yang mencari semua baris yang diakhiri dengan satu digit di bidang terakhir dan mengganti satu digit dengan angka satu digit ditambah string Single Digit.

Untuk mengidentifikasi baris dengan angka satu digit dengan benar di bidang terakhir, pertimbangkan perintah sed berikut. Tab memisahkan bidang dengan setiap baris.

sed -n '/    [0-9]$/p' data.txt 
southeast       SE      Derek Johnson       3

Perintah berikut mencari semua baris yang diakhiri dengan satu digit di bidang terakhir dan mengganti satu digit dengan nomor satu digit ditambah string Single Digit.

# sed 's/    [0-9]$/& Single Digit/' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3 Single Digit
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Menggunakan sed untuk Menghapus Teks

Contoh 1 :Hapus rentang garis

Perintah berikut menghapus Baris 4 sampai 8 dari output.

# sed '4,8d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
southwest       SW      Chris Foster        33
central         CT      Sheri Watson        44

Contoh 2 :Menghapus baris yang berisi pola tertentu

Perintah berikut menghapus setiap baris yang berisi pola barat.

# sed '/west/d' data.txt 
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Contoh 3

Perintah berikut menghapus setiap baris yang dimulai dengan pola barat.

# sed '/^west/d' data.txt 
northwest       NW      Joel Craig          10
southwest       SW      Chris Foster        33
southern        SO      May Chin            45
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
northeast       NE      TJ Nichols          67
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Contoh 4

Perintah berikut menghapus rentang baris yang dimulai dengan baris pertama yang berisi pola selatan, hingga baris berikutnya dari file yang berisi utara.

# sed '/south/,/north/d' data.txt 
northwest       NW      Joel Craig          10
western         WE      Sharon Kelly        40
north           NO      Val Shultz          91
central         CT      Sheri Watson        44

Fungsi sed Tambahan – Mengedit Perintah

Perintah editor sed tambahan ditampilkan pada tabel berikut.

Perintah Fungsi
a Menambahkan teks
c Mengubah teks pada baris saat ini dengan teks baru
i Menyisipkan teks di atas baris saat ini

Menempatkan Banyak Pengeditan dalam Satu Perintah sed

Ada kalanya Anda ingin melakukan beberapa pengeditan pada file. Daripada menggunakan beberapa perintah sed, Anda dapat menggunakan opsi -e untuk menempatkan pengeditan di baris perintah yang sama. Pengeditan dilakukan dalam urutan yang Anda tentukan.

Contoh 1

Hapus garis dengan hati-hati. Anda dapat melakukan pengeditan pada baris teks dan kemudian menghapus baris teks tersebut dari output. Ini terjadi pada contoh berikut dengan Baris 1 dari file input.

# sed -e 's/north/North/' -e '1,4d' data.txt 
southeast       SE      Derek Johnson       3
eastern         EA      Susan Beal          34
Northeast       NE      TJ Nichols          67
North           NO      Val Shultz          91
central         CT      Sheri Watson        44


Linux
  1. 12 Contoh Perintah Wget yang Berguna di Linux

  2. ls Perintah di Linux:17 Contoh yang Berguna Dijelaskan

  3. 5 Contoh Berguna dari perintah firewall-cmd

  1. Contoh yang Berguna dari Perintah Docker ps

  2. 10 Contoh Perintah Sed (Stream Editor)

  3. sed Contoh Perintah di Linux

  1. Perintah Linux sed:Cara Menggunakan Editor Streaming

  2. 14 Contoh Perintah 'ls' yang Berguna di Linux

  3. 9 Contoh perintah sentuh yang berguna di Linux