GNU/Linux >> Belajar Linux >  >> Linux

50 Contoh Praktis Perintah SED di Linux

Tidak peduli apakah Anda seorang admin sistem atau sekadar penggemar, kemungkinan Anda harus sering bekerja dengan dokumen teks. Linux, seperti Unix lainnya, menyediakan beberapa utilitas manipulasi teks terbaik untuk pengguna akhir. Utilitas baris perintah sed adalah salah satu alat yang membuat pemrosesan teks jauh lebih nyaman dan produktif. Jika Anda pengguna berpengalaman, Anda pasti sudah tahu tentang sed. Namun, pemula sering merasa bahwa belajar sed membutuhkan kerja keras ekstra dan karenanya menahan diri untuk tidak menggunakan alat yang memikat ini. Itulah sebabnya kami mengambil kebebasan untuk membuat panduan ini dan membantu mereka mempelajari dasar-dasar sed semudah mungkin.

Perintah SED yang Berguna untuk Pengguna Pemula

Sed adalah salah satu dari tiga utilitas penyaringan yang banyak digunakan yang tersedia di Unix, yang lainnya adalah "grep dan awk". Kami telah membahas perintah grep Linux dan perintah awk untuk pemula. Panduan ini bertujuan untuk merangkum utilitas sed untuk pengguna pemula dan membuat mereka mahir dalam pemrosesan teks menggunakan Linux dan Unices lainnya.

Cara Kerja SED:Pemahaman Dasar

Sebelum mempelajari contoh secara langsung, Anda harus memiliki pemahaman singkat tentang cara kerja sed secara umum. Sed adalah editor aliran, dibangun di atas utilitas ed. Ini memungkinkan kita untuk membuat perubahan pengeditan pada aliran data tekstual. Meskipun kita dapat menggunakan sejumlah editor teks Linux untuk mengedit, sed memungkinkan sesuatu yang lebih nyaman.

Anda dapat menggunakan sed untuk mengubah teks atau memfilter data penting dengan cepat. Ini menganut filosofi inti Unix dengan melakukan tugas khusus ini dengan sangat baik. Selain itu, sed bermain sangat baik dengan alat dan perintah terminal Linux standar. Dengan demikian, ini lebih cocok untuk banyak tugas daripada editor teks tradisional.

Pada intinya, sed mengambil beberapa input, melakukan beberapa manipulasi, dan mengeluarkan output. Itu tidak mengubah input tetapi hanya menunjukkan hasil dalam output standar. Kita dapat dengan mudah membuat perubahan ini permanen dengan pengalihan I/O atau memodifikasi file asli. Sintaks dasar dari perintah sed ditunjukkan di bawah ini.

sed [OPTIONS] INPUT nama file 'daftar perintah ed'

Baris pertama adalah sintaks yang ditunjukkan dalam manual sed. Yang kedua lebih mudah dipahami. Jangan khawatir jika Anda tidak terbiasa dengan perintah ed sekarang. Anda akan mempelajarinya di seluruh panduan ini.

1. Mengganti Input Teks

- -

Perintah pengganti adalah fitur sed yang paling banyak digunakan untuk banyak pengguna. Ini memungkinkan kita untuk mengganti sebagian teks dengan data lain. Anda akan sangat sering menggunakan perintah ini untuk memproses data tekstual. Ini bekerja seperti berikut.

$ echo 'Halo dunia!' | sed 's/world/universe/'

Perintah ini akan menampilkan string 'Hello universe!'. Ini memiliki empat bagian dasar. ini perintah menunjukkan operasi substitusi, /../../ adalah pembatas, bagian pertama dalam pembatas adalah pola yang perlu diubah, dan bagian terakhir adalah string pengganti.

2. Mengganti Input Teks dari File

Mari kita buat file terlebih dahulu menggunakan yang berikut ini.

$ echo 'ladang stroberi selamanya...'>> input-file$ cat input-file

Sekarang, katakanlah kita ingin mengganti strawberry dengan blueberry. Kita dapat melakukannya dengan menggunakan perintah sederhana berikut. Perhatikan kesamaan antara bagian sed dari perintah ini dan yang di atas.

$ sed 's/strawberry/blueberry/' file input

Kami hanya menambahkan nama file setelah bagian sed. Anda juga dapat menampilkan konten file terlebih dahulu dan kemudian menggunakan sed untuk mengedit aliran keluaran, seperti yang ditunjukkan di bawah ini.

$ file masukan cat | sed 's/strawberry/blueberry/'

3. Menyimpan Perubahan ke File

Seperti yang telah kami sebutkan, sed tidak mengubah data input sama sekali. Ini hanya menunjukkan data yang diubah ke output standar, yang kebetulan merupakan terminal Linux secara default. Anda dapat memverifikasi ini dengan menjalankan perintah berikut.

$ file input cat

Ini akan menampilkan konten asli file. Namun, katakanlah Anda ingin membuat perubahan Anda permanen. Anda dapat melakukan ini dengan berbagai cara. Metode standar adalah mengarahkan output sed Anda ke file lain. Perintah berikutnya menyimpan output dari perintah sed sebelumnya ke file bernama output-file.

$ sed 's/strawberry/blueberry/' file-input>> file-output

Anda dapat memverifikasi ini dengan menggunakan perintah berikut.

$ file keluaran cat

4. Menyimpan Perubahan ke File Asli

Bagaimana jika Anda ingin menyimpan output sed kembali ke file aslinya? Anda dapat melakukannya menggunakan -i atau –di tempat pilihan alat ini. Perintah di bawah ini menunjukkannya menggunakan contoh yang sesuai.

$ sed -i 's/strawberry/blueberry' input-file$ sed --in-place 's/strawberry/blueberry/' input-file

Kedua perintah di atas setara, dan mereka menulis perubahan yang dibuat oleh sed kembali ke file asli. Namun, jika Anda berpikir untuk mengarahkan output kembali ke file asli, itu tidak akan berfungsi seperti yang diharapkan.

$ sed 's/strawberry/blueberry/' input-file> input-file

Perintah ini tidak akan berfungsi dan menghasilkan file input kosong. Ini karena shell melakukan pengalihan sebelum menjalankan perintah itu sendiri.

5. Melarikan diri dari Pembatas

Banyak contoh sed konvensional menggunakan karakter '/' sebagai pembatasnya. Namun, bagaimana jika Anda ingin mengganti string yang berisi karakter ini? Contoh di bawah ini mengilustrasikan cara mengganti jalur nama file menggunakan sed. Kita harus menghindari pembatas '/' menggunakan karakter garis miring terbalik.

$ echo '/usr/local/bin/dummy'>> input-file$ sed 's/\/usr\/local\/bin\/dummy/\/usr\/bin\/dummy/' masukan -file> output-file

Cara mudah lainnya untuk menghindari pembatas adalah dengan menggunakan metakarakter yang berbeda. Misalnya, kita bisa menggunakan '_' sebagai ganti '/' sebagai pembatas untuk perintah substitusi. Ini sangat valid karena sed tidak mengamanatkan pembatas tertentu. Tanda '/' digunakan oleh konvensi, bukan sebagai persyaratan.

$ sed 's_/usr/local/bin/dummy_/usr/bin/dummy/_' file input

6. Mengganti Setiap Instance dari Sebuah String

Salah satu karakteristik menarik dari perintah substitusi adalah, secara default, perintah ini hanya akan menggantikan satu contoh string pada setiap baris.

$ cat <> input-file satu dua satu tigadua empat duatiga satu empatEOF

Perintah ini akan mengganti isi file input dengan beberapa angka acak dalam format string. Sekarang, lihat perintah di bawah ini.

$ sed 's/one/ONE/' file input

Seperti yang Anda lihat, perintah ini hanya menggantikan kemunculan pertama dari 'satu' di baris pertama. Anda perlu menggunakan substitusi global untuk mengganti semua kemunculan kata menggunakan sed. Cukup tambahkan ‘g’ setelah pembatas akhir dari 's ‘.

file masukan $ sed 's/one/ONE/g'

Ini akan menggantikan semua kemunculan kata 'satu' di seluruh aliran input.

7. Menggunakan String yang Cocok

Terkadang pengguna mungkin ingin menambahkan hal-hal tertentu seperti tanda kurung atau tanda kutip di sekitar string tertentu. Ini mudah dilakukan jika Anda tahu persis apa yang Anda cari. Namun, bagaimana jika kita tidak tahu persis apa yang akan kita temukan? Utilitas sed menyediakan fitur kecil yang bagus untuk mencocokkan string tersebut.

$ echo 'satu dua tiga 123' | sed 's/123/(123)/'

Di sini, kami menambahkan tanda kurung di sekitar 123 menggunakan perintah substitusi sed. Namun, kami dapat melakukan ini untuk string apa pun di aliran input kami dengan menggunakan metakarakter khusus & , seperti yang diilustrasikan oleh contoh berikut.

$ echo 'satu dua tiga 123' | sed 's/[a-z][a-z]*/(&)/g'

Perintah ini akan menambahkan tanda kurung di sekitar semua kata dengan huruf kecil di input kita. Jika Anda menghilangkan ‘g’ pilihan, sed akan melakukannya hanya untuk kata pertama, tidak semuanya.

8. Menggunakan Ekspresi Reguler yang Diperluas

Pada perintah di atas, kita telah mencocokkan semua kata dengan huruf kecil menggunakan ekspresi reguler [a-z][a-z]*. Ini cocok dengan satu atau lebih huruf kecil. Cara lain untuk mencocokkannya adalah dengan menggunakan metakarakter ‘+’ . Ini adalah contoh ekspresi reguler yang diperluas. Jadi, sed tidak akan mendukungnya secara default.

$ echo 'satu dua tiga 123' | sed 's/[a-z]+/(&)/g'

Perintah ini tidak berfungsi sebagaimana mestinya karena sed tidak mendukung ‘+’ metakarakter di luar kotak. Anda perlu menggunakan opsi -E atau -r untuk mengaktifkan ekspresi reguler yang diperluas di sed.

$ echo 'satu dua tiga 123' | sed -E 's/[a-z]+/(&)/g'$ echo 'satu dua tiga 123' | sed -r 's/[a-z]+/(&)/g'

9. Melakukan Banyak Pergantian

Kita dapat menggunakan lebih dari satu perintah sed sekaligus dengan memisahkannya dengan ‘;’ (titik koma). Ini sangat berguna karena memungkinkan pengguna untuk membuat kombinasi perintah yang lebih kuat dan mengurangi kerumitan ekstra dengan cepat. Perintah berikut menunjukkan kepada kita cara mengganti tiga string sekaligus menggunakan metode ini.

$ echo 'satu dua tiga' | sed 's/satu/1/; s/dua/2/; s/tiga/3/'

Kami telah menggunakan contoh sederhana ini untuk mengilustrasikan bagaimana melakukan beberapa substitusi atau operasi sed lainnya dalam hal ini.

10. Mengganti Huruf Besar-kecil Secara Tidak Peka

Utilitas sed memungkinkan kita untuk mengganti string dengan cara yang tidak peka huruf besar/kecil. Pertama, mari kita lihat bagaimana sed melakukan operasi penggantian sederhana berikut.

$ echo 'satu SATU Satu' | sed 's/one/1/g' # menggantikan satu

Perintah substitusi hanya dapat mencocokkan satu contoh 'satu' dan dengan demikian menggantikannya. Namun, katakanlah kami ingin mencocokkan semua kemunculan 'satu', terlepas dari kasusnya. Kita dapat mengatasi ini dengan menggunakan flag 'i' dari operasi substitusi sed.

$ echo 'satu SATU Satu' | sed 's/one/1/gi' # menggantikan semua yang ada

11. Mencetak Garis Tertentu

Kita dapat melihat baris tertentu dari input dengan menggunakan 'p' memerintah. Mari kita tambahkan beberapa teks lagi ke file input kita dan tunjukkan contoh ini.

$ echo 'Menambahkan beberapa teks lagi ke file input untuk demonstrasi yang lebih baik'>> file input

Sekarang, jalankan perintah berikut untuk melihat cara mencetak baris tertentu menggunakan 'p'.

$ sed '3p; File masukan 6p'

Output harus berisi nomor baris tiga dan enam dua kali. Ini bukan yang kita harapkan, bukan? Ini terjadi karena, secara default, sed mengeluarkan semua baris dari aliran input, serta baris, yang ditanyakan secara spesifik. Untuk mencetak hanya baris tertentu, kita perlu menekan semua keluaran lainnya.

$ sed -n '3p; 6p' input-file$ sed --quiet '3p; 6p' input-file$ sed --silent '3p; File masukan 6p'

Semua perintah sed ini setara dan hanya mencetak baris ketiga dan keenam dari file input kami. Jadi, Anda dapat menekan keluaran yang tidak diinginkan dengan menggunakan salah satu -n , –tenang , atau –diam pilihan.

12. Rentang Pencetakan Garis

Perintah di bawah ini akan mencetak rentang baris dari file input kita. Simbol ‘,’ dapat digunakan untuk menentukan rentang input untuk sed.

$ sed -n '2,4p' input-file$ sed --quiet '2,4p' input-file$ sed --silent '2,4p' input-file

ketiga perintah ini juga setara. Mereka akan mencetak baris dua sampai empat dari file input kita.

13. Mencetak Garis Tidak Berturut-turut

Misalkan Anda ingin mencetak baris tertentu dari input teks Anda menggunakan satu perintah. Anda dapat menangani operasi semacam itu dengan dua cara. Yang pertama adalah menggabungkan beberapa operasi pencetakan menggunakan ‘;’ pemisah.

$ sed -n '1,2p; File masukan 5,6p'

Perintah ini mencetak dua baris pertama dari file input diikuti oleh dua baris terakhir. Anda juga dapat melakukannya dengan menggunakan -e pilihan sed Perhatikan perbedaan sintaksnya.

$ sed -n -e '1,2p' -e '5,6p' file masukan

14. Mencetak Setiap Baris ke-N

Katakanlah kami ingin menampilkan setiap baris kedua dari file input kami. Utilitas sed membuatnya sangat mudah dengan menyediakan tilde ‘~’ operator. Lihat sekilas perintah berikut untuk melihat cara kerjanya.

$ sed -n '1~2p' input-file

Perintah ini bekerja dengan mencetak baris pertama diikuti oleh setiap baris kedua dari input. Perintah berikut mencetak baris kedua diikuti oleh setiap baris ketiga dari output perintah ip sederhana.

$ ip -4 a | sed -n '2~3p'

15. Mengganti Teks Dalam Rentang

Kami juga dapat mengganti beberapa teks hanya dalam rentang tertentu dengan cara yang sama seperti kami mencetaknya. Perintah di bawah ini menunjukkan cara mengganti 'satuan dengan 1' di tiga baris pertama file input kita menggunakan sed.

$ sed '1,3 s/one/1/gi' file input

Perintah ini akan membuat 'orang lain tidak terpengaruh. Tambahkan beberapa baris yang berisi satu ke file ini dan coba periksa sendiri.

16. Menghapus Baris dari Masukan

Perintah ed 'd' memungkinkan kita untuk menghapus baris atau rentang baris tertentu dari aliran teks atau dari file input. Perintah berikut menunjukkan cara menghapus baris pertama dari output sed.

$ sed '1d' input-file

Karena sed hanya menulis ke output standar, penghapusan ini tidak akan tercermin pada file asli. Perintah yang sama dapat digunakan untuk menghapus baris pertama dari aliran teks multibaris.

$ ps | sed '1d'

Jadi, hanya dengan menggunakan 'd' perintah setelah alamat baris, kita dapat menekan input untuk sed.

17. Menghapus Rentang Garis dari Input

Juga sangat mudah untuk menghapus rentang garis dengan menggunakan operator ',' di samping 'd' pilihan. Perintah sed berikutnya akan menekan tiga baris pertama dari file input kita.

$ sed '1,3d' input-file

Kami juga dapat menghapus baris yang tidak berurutan dengan menggunakan salah satu perintah berikut.

$ sed '1d; 3d; File masukan 5d'

Perintah ini menampilkan baris kedua, keempat, dan terakhir dari file input kita. Perintah berikut menghilangkan beberapa baris arbitrer dari output perintah ip Linux sederhana.

$ ip -4 a | sed '1d; 3d; 4d; 6d'

18. Menghapus Baris Terakhir

Utilitas sed memiliki mekanisme sederhana yang memungkinkan kita untuk menghapus baris terakhir dari aliran teks atau file input. Ini adalah ‘$’ simbol dan dapat juga digunakan untuk jenis operasi lain selain penghapusan. Perintah berikut menghapus baris terakhir dari file input.

$ sed '$d' input-file

Ini sangat berguna karena seringkali kita mungkin mengetahui jumlah baris sebelumnya. Ini bekerja dengan cara yang sama untuk input pipeline.

$ urutan 3 | sed '$d'

19. Menghapus Semua Baris Kecuali Yang Tertentu

Contoh penghapusan sed lain yang berguna adalah menghapus semua baris kecuali yang ditentukan dalam perintah. Ini berguna untuk menyaring informasi penting dari aliran teks atau keluaran perintah terminal Linux lainnya.

$ gratis | sed '2!d'

Perintah ini hanya akan menampilkan penggunaan memori, yang kebetulan berada di baris kedua. Anda juga dapat melakukan hal yang sama dengan file input, seperti yang ditunjukkan di bawah ini.

$ sed '1,3!d' input-file

Perintah ini menghapus setiap baris kecuali tiga baris pertama dari file input.

20. Menambahkan Baris Kosong

Terkadang aliran input mungkin terlalu terkonsentrasi. Anda dapat menggunakan utilitas sed untuk menambahkan baris kosong di antara input dalam kasus seperti itu. Contoh berikutnya menambahkan baris kosong di antara setiap baris output dari perintah ps.

$ ps aux | sed 'G'

‘G’ perintah menambahkan baris kosong ini. Anda dapat menambahkan beberapa baris kosong dengan menggunakan lebih dari satu 'G' perintah untuk sed.

$ sed 'G; File masukan G'

Perintah berikut menunjukkan cara menambahkan baris kosong setelah nomor baris tertentu. Ini akan menambahkan baris kosong setelah baris ketiga dari file input kita.

$ sed '3G' input-file

21. Mengganti Teks pada Baris Tertentu

Utilitas sed memungkinkan pengguna untuk mengganti beberapa teks pada baris tertentu. Ini berguna dalam sejumlah skenario yang berbeda. Katakanlah kita ingin mengganti kata 'satu' pada baris ketiga dari file input kita. Kita dapat menggunakan perintah berikut untuk melakukannya.

$ sed '3 s/one/1/' file input

‘3’ sebelum awal 's' perintah menentukan bahwa kita hanya ingin mengganti kata yang ditemukan pada baris ketiga.

22. Mengganti Kata ke-N dari sebuah String

Kita juga dapat menggunakan perintah sed untuk mengganti kemunculan pola ke-n untuk string yang diberikan. Contoh berikut mengilustrasikan ini menggunakan satu contoh satu baris di bash.

$ echo 'satu satu satu satu satu satu' | sed 's/one/1/3'

Perintah ini akan menggantikan 'satu' ketiga dengan nomor 1. Ini bekerja dengan cara yang sama untuk file input. Perintah di bawah ini menggantikan 'dua' terakhir dari baris kedua file input.

$ file masukan cat | sed '2 s/two/2/2'

Kami pertama-tama memilih baris kedua dan kemudian menentukan kemunculan pola mana yang akan diubah.

23. Menambahkan Baris Baru

Anda dapat dengan mudah menambahkan baris baru ke aliran input dengan menggunakan perintah 'a' . Lihat contoh sederhana di bawah ini untuk melihat cara kerjanya.

$ sed file input 'baris baru di input'

Perintah di atas akan menambahkan string 'baris baru di input' setelah setiap baris file input asli. Namun, ini mungkin bukan yang Anda maksudkan. Anda dapat menambahkan baris baru setelah baris tertentu dengan menggunakan sintaks berikut.

$ sed '3 baris baru di input' file input

24. Memasukkan Baris Baru

Kami juga dapat menyisipkan baris alih-alih menambahkannya. Perintah di bawah ini menyisipkan baris baru sebelum setiap baris input.

$ urutan 5 | sed 'i 888'

'i' perintah menyebabkan string 888 dimasukkan sebelum setiap baris output dari seq. Untuk menyisipkan baris sebelum baris input tertentu, gunakan sintaks berikut.

$ urutan 5 | sed '3 i 333'

Perintah ini akan menambahkan angka 333 sebelum baris yang sebenarnya berisi tiga. Ini adalah contoh sederhana dari penyisipan baris. Anda dapat dengan mudah menambahkan string dengan mencocokkan garis menggunakan pola.

25. Mengubah Jalur Input

Kami juga dapat mengubah baris aliran input secara langsung menggunakan ‘c’ perintah dari utilitas sed. Ini berguna ketika Anda tahu persis baris mana yang harus diganti dan tidak ingin mencocokkan baris menggunakan ekspresi reguler. Contoh di bawah ini mengubah baris ketiga dari output perintah seq.

$ urutan 5 | sed '3 c 123'

Ini menggantikan isi baris ketiga, yaitu 3, dengan angka 123. Contoh berikut menunjukkan kepada kita bagaimana mengubah baris terakhir dari file input kita menggunakan ‘c’ .

file masukan $ sed '$ c CHANGED STRING'

Kami juga dapat menggunakan regex untuk memilih nomor baris yang akan diubah. Contoh berikut mengilustrasikan hal ini.

$ sed '/demo*/ c CHANGED TEXT' file input

26. Membuat File Cadangan untuk Masukan

Jika Anda ingin mengubah beberapa teks dan menyimpan perubahan kembali ke file asli, kami sangat menyarankan Anda untuk membuat file cadangan sebelum melanjutkan. Perintah berikut melakukan beberapa operasi sed pada file input kami dan menyimpannya sebagai aslinya. Selain itu, ini membuat cadangan yang disebut input-file.old sebagai tindakan pencegahan.

$ sed -i.old 's/one/1/g; s/dua/2/g; s/three/3/g' file input

-i opsi menulis perubahan yang dibuat oleh sed ke file asli. Bagian akhiran .old bertanggung jawab untuk membuat dokumen input-file.old.

27. Mencetak Garis Berdasarkan Pola

Katakanlah, kami ingin mencetak semua baris dari input berdasarkan pola tertentu. Ini cukup mudah ketika kita menggabungkan perintah sed 'p' dengan -n pilihan. Contoh berikut mengilustrasikan hal ini menggunakan file input.

$ sed -n '/^for/ p' file input

Perintah ini mencari pola 'untuk' di awal setiap baris dan hanya mencetak baris yang dimulai dengan itu. ‘^’ karakter adalah karakter ekspresi reguler khusus yang dikenal sebagai jangkar. Ini menentukan pola harus ditempatkan di awal baris.

28. Menggunakan SED sebagai Alternatif untuk GREP

Perintah grep di Linux mencari pola tertentu dalam file dan, jika ditemukan, menampilkan baris. Kita dapat meniru perilaku ini menggunakan utilitas sed. Perintah berikut mengilustrasikan hal ini menggunakan contoh sederhana.

$ sed -n 's/strawberry/&/p' /usr/share/dict/american-english

Perintah ini menempatkan kata strawberry di american-english berkas kamus. Ini bekerja dengan mencari pola stroberi dan kemudian menggunakan string yang cocok di samping 'p' perintah untuk mencetaknya. -n flag menekan semua baris lain dalam output. Kita dapat membuat perintah ini lebih sederhana dengan menggunakan sintaks berikut.

$ sed -n '/strawberry/p' /usr/share/dict/american-english

29. Menambahkan Teks dari File

'r' perintah dari utilitas sed memungkinkan kita untuk menambahkan teks yang dibaca dari file ke aliran input. Perintah berikut menghasilkan aliran input untuk sed menggunakan perintah seq dan menambahkan teks yang dikandung oleh file input ke aliran ini.

$ urutan 5 | sed 'r file input'

Perintah ini akan menambahkan isi file input setelah setiap urutan input berurutan yang dihasilkan oleh seq. Gunakan perintah berikutnya untuk menambahkan konten setelah angka yang dihasilkan oleh seq.

$ urutan 5 | sed '$ r file input'

Anda dapat menggunakan perintah berikut untuk menambahkan konten setelah input baris ke-n.

$ urutan 5 | sed '3 r input-file'

30. Menulis Modifikasi ke File

Misalkan kita memiliki file teks yang berisi daftar alamat web. Katakanlah, beberapa di antaranya dimulai dengan www, beberapa https, dan lainnya http. Kami dapat mengubah semua alamat yang dimulai dengan www menjadi https dan hanya menyimpan yang telah dimodifikasi ke file yang sama sekali baru.

$ sed 's/www/https/ w situs web-situs web yang dimodifikasi

Sekarang, jika Anda memeriksa isi file situs web yang dimodifikasi, Anda hanya akan menemukan alamat yang diubah oleh sed. 'w nama file ' opsi menyebabkan sed menulis modifikasi ke nama file yang ditentukan. Ini berguna ketika Anda berurusan dengan file besar dan ingin menyimpan data yang dimodifikasi secara terpisah.

31. Menggunakan File Program SED

Terkadang, Anda mungkin perlu melakukan sejumlah operasi sed pada set input yang diberikan. Dalam kasus seperti itu, lebih baik menulis file program yang berisi semua skrip sed yang berbeda. Anda kemudian dapat memanggil file program ini dengan menggunakan -f opsi utilitas sed.

$ cat <> sed-scripts/a/A/gs/e/E/gs/i/I/gs/o/O/gs/u/U/gEOF

Program sed ini mengubah semua vokal huruf kecil menjadi huruf besar. Anda dapat menjalankan ini dengan menggunakan sintaks di bawah ini.

$ sed -f sed-script input-file$ sed --file=sed-script  

32. Menggunakan Perintah SED Multi-Baris

Jika Anda menulis program sed besar yang mencakup beberapa baris, Anda harus mengutipnya dengan benar. Sintaksnya sedikit berbeda antara shell Linux yang berbeda. Untungnya, ini sangat sederhana untuk bourne shell dan turunannya (bash).

$ sed 's/a/A/g s/e/E/g s/i/I/g s/o/O/g s/u/U/g'  

Di beberapa shell, seperti shell C (csh), Anda perlu melindungi tanda kutip menggunakan karakter backslash(\).

$ sed 's/a/A/g \s/e/E/g \s/i/I/g \s/o/O/g \s/u/U/g'  

33. Mencetak Nomor Baris

Jika Anda ingin mencetak nomor baris yang berisi string tertentu, Anda dapat mencarinya menggunakan pola dan mencetaknya dengan sangat mudah. Untuk ini, Anda perlu menggunakan ‘=' perintah utilitas sed.

$ sed -n '/ion*/ ='  

Perintah ini akan mencari pola yang diberikan dalam file input dan mencetak nomor barisnya dalam output standar. Anda juga dapat menggunakan kombinasi grep dan awk untuk mengatasi ini.

$ cat -n input-file | grep 'ion*' | awk '{print $1}'

Anda dapat menggunakan perintah berikut untuk mencetak jumlah baris dalam input Anda.

$ sed -n '$=' file-input

34. Mencegah Penimpaan Symlink

Sed 'i' atau ‘–di tempat ' perintah sering menimpa tautan sistem apa pun dengan file biasa. Ini adalah situasi yang tidak diinginkan dalam banyak kasus, dan dengan demikian pengguna mungkin ingin mencegah hal ini terjadi. Untungnya, sed menyediakan opsi baris perintah sederhana untuk menonaktifkan penimpaan tautan simbolik.

$ echo 'apple'> fruit$ ln --symbolic fruit fruit-link$ sed --in-place --follow-symlinks 's/apple/banana/' fruit-link$ cat fruit

Jadi, Anda dapat mencegah penimpaan tautan simbolik dengan menggunakan –follow-symlinks pilihan utilitas sed. Dengan cara ini, Anda dapat mempertahankan symlink saat melakukan pemrosesan teks.

35. Mencetak Semua Nama Pengguna Dari /etc/passwd

/etc/passwd file berisi informasi seluruh sistem untuk semua akun pengguna di Linux. Kita bisa mendapatkan daftar semua nama pengguna yang tersedia di file ini dengan menggunakan program sed satu baris sederhana. Perhatikan contoh di bawah ini untuk melihat cara kerjanya.

$ sed 's/\([^:]*\).*/\1/' /etc/passwd

Kami telah menggunakan pola ekspresi reguler untuk mendapatkan bidang pertama dari file ini sambil membuang semua informasi lainnya. Di sinilah nama pengguna berada di /etc/passwd berkas.

36. Menghapus Baris yang Dikomentari dari Masukan

Banyak alat sistem, serta aplikasi pihak ketiga, dilengkapi dengan file konfigurasi. File-file ini biasanya berisi banyak komentar yang menjelaskan parameter secara rinci. Namun, terkadang Anda mungkin hanya ingin menampilkan opsi konfigurasi sambil mempertahankan komentar asli.

$ cat ~/.bashrc | sed -e 's/#.*//;/^$/d'

Perintah ini menghapus baris yang dikomentari dari file konfigurasi bash. Komentar ditandai menggunakan tanda '#' sebelumnya. Jadi, kami telah menghapus semua baris tersebut menggunakan pola regex sederhana. Jika komentar ditandai menggunakan simbol yang berbeda, ganti '#' pada pola di atas dengan simbol tertentu.

$ cat ~/.vimrc | sed -e 's/".*//;/^$/d'

Ini akan menghapus komentar dari file konfigurasi vim, yang dimulai dengan tanda petik ganda (“).

37. Menghapus Spasi Putih dari Masukan

Banyak dokumen teks diisi dengan spasi putih yang tidak perlu. Seringkali mereka adalah hasil dari pemformatan yang buruk dan dapat mengacaukan keseluruhan dokumen. Untungnya, sed memungkinkan pengguna untuk menghapus spasi yang tidak diinginkan ini dengan mudah. Anda dapat menggunakan perintah berikutnya untuk menghapus spasi putih awal dari aliran input.

$ sed 's/^[ \t]*//' whitespace.txt

Perintah ini akan menghapus semua spasi putih terkemuka dari file whitespace.txt. Jika Anda ingin menghapus spasi putih, gunakan perintah berikut sebagai gantinya.

$ sed 's/[ \t]*$//' whitespace.txt

Anda juga dapat menggunakan perintah sed untuk menghapus spasi putih awal dan akhir secara bersamaan. Perintah di bawah ini dapat digunakan untuk melakukan tugas ini.

$ sed 's/^[ \t]*//;s/[ \t]*$//' whitespace.txt

38. Membuat Offset Halaman dengan SED

Jika Anda memiliki file besar dengan bantalan depan nol, Anda mungkin ingin membuat beberapa halaman offset untuk itu. Offset halaman hanya memimpin spasi putih yang membantu kita membaca baris input dengan mudah. Perintah berikut membuat offset 5 spasi kosong.

$ sed 's/^/ /' file-input

Cukup tambah atau kurangi jarak untuk menentukan offset yang berbeda. Perintah berikutnya mengurangi offset halaman menjadi 3 baris kosong.

$ sed 's/^/ /' file-input

39. Membalikkan Garis Input

Perintah berikut menunjukkan kepada kita cara menggunakan sed untuk membalik urutan baris dalam file input. Ini mengemulasi perilaku tac Linux perintah.

$ sed '1!G;h;$!d' file input

Perintah ini membalikkan baris dokumen baris input. Itu juga dapat dilakukan dengan menggunakan metode alternatif.

$ sed -n '1!G;h;$p' file input

40. Membalikkan Karakter Input

Kita juga dapat menggunakan utilitas sed untuk membalikkan karakter pada baris input. Ini akan membalikkan urutan setiap karakter berurutan dalam aliran input.

$ sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' file-input 

Perintah ini mengemulasi perilaku Linux rev memerintah. Anda dapat memverifikasi ini dengan menjalankan perintah di bawah ini setelah perintah di atas.

$ file input rev

41. Menggabungkan Pasangan Jalur Input

Perintah sed sederhana berikut ini menggabungkan dua baris berturut-turut dari file input sebagai satu baris. Ini berguna ketika Anda memiliki teks besar yang berisi garis terpisah.

$ sed '$!N;s/\n/ /' input-file$ tail -15 /usr/share/dict/american-english | sed '$!N;s/\n/ /'

Ini berguna dalam sejumlah tugas manipulasi teks.

42. Menambahkan Baris Kosong pada Setiap Baris Ke-N dari Input

Anda dapat menambahkan baris kosong pada setiap baris ke-n dari file input dengan sangat mudah menggunakan sed. Perintah berikutnya menambahkan baris kosong pada setiap baris ketiga file input.

$ sed 'n;n;G;' file masukan

Gunakan yang berikut ini untuk menambahkan baris kosong pada setiap baris kedua.

$ sed 'n;G;' file masukan

43. Mencetak Baris ke-N Terakhir

Sebelumnya, kami telah menggunakan perintah sed untuk mencetak baris input berdasarkan nomor baris, rentang, dan pola. Kita juga dapat menggunakan sed untuk meniru perilaku perintah kepala atau ekor. Contoh berikutnya mencetak 3 baris terakhir dari file input.

$ sed -e :a -e '$q;N;4,$D;ba' file masukan

Ini mirip dengan file input tail -3 perintah tail di bawah ini.

44. Cetak Garis yang Mengandung Jumlah Karakter Tertentu

Sangat mudah untuk mencetak garis berdasarkan jumlah karakter. Perintah sederhana berikut akan mencetak baris yang memiliki 15 karakter atau lebih di dalamnya.

$ sed -n '/^.\{15\}/p' file input

Gunakan perintah di bawah ini untuk mencetak baris yang memiliki kurang dari 20 karakter.

$ sed -n '/^.\{20\}/!p' file input

Kita juga dapat melakukannya dengan cara yang lebih sederhana menggunakan metode berikut.

$ sed '/^.\{20\}/d' file input

45. Menghapus Baris Duplikat

Contoh sed berikut menunjukkan kepada kita untuk meniru perilaku uniq Linux Linux memerintah. Ini menghapus dua baris duplikat berturut-turut dari input.

$ sed '$!N; /^\(.*\)\n\1$/!P; File masukan D'

Namun, sed tidak dapat menghapus semua baris duplikat jika input tidak diurutkan. Although you can sort the text using the sort command and then connect the output to sed using a pipe, it will change the orientation of the lines.

46. Deleting All Blank Lines

If your text file contains a lot of unnecessary blank lines, you may delete them using the sed utility. The below command demonstrates this.

$ sed '/^$/d' input-file$ sed '/./!d' input-file

Both of these commands will delete any blank lines present in the specified file.

47. Deleting Last Lines of Paragraphs

You can delete the last line of all paragraphs using the following sed command. We will use a dummy filename for this example. Replace this with the name of an actual file that contains some paragraphs.

$ sed -n '/^$/{p;h;};/./{x;/./p;}' paragraphs.txt

48. Displaying the Help Page

The help page contains summarized information on all available options and usage of the sed program. You can invoke this by using the following syntax.

$ sed -h$ sed --help

You can use any of these two commands to find a nice, compact overview of the sed utility.

49. Displaying the Manual Page

The manual page provides an in-depth discussion of sed, its usage, and all available options. You should read this carefully to understand sed clearly.

$ man sed

50. Displaying Version Information

The –version option of sed allows us to view which version of sed is installed in our machine. It is useful when debugging errors and reporting bugs.

$ sed --version

The above command will display the version information of the sed utility in your system.

Mengakhiri Pikiran

The sed command is one of the most widely used text manipulation tools provided by Linux distributions. It is one of the three primary filtering utilities in Unix, alongside grep and awk. We have outlined 50 simple yet useful examples to help readers get started with this amazing tool. We highly recommend users to try these commands themselves to gain practical insights. Additionally, try tweaking the examples given in this guide and examine their effect. It will help you master sed quickly. Hopefully, you’ve learned the basics of sed clearly. Don’t forget to comment below if you’ve any questions.


Linux
  1. Perintah Sed Linux:Penggunaan dan Contoh

  2. Contoh Praktis Perintah Unzip di Linux

  3. 5 Contoh Praktis Perintah dd di Linux

  1. Perintah cp di Linux:7 Contoh Praktis

  2. 10 Contoh Perintah Linux nm Praktis

  3. sed Contoh Perintah di Linux

  1. Apa itu Perintah + Contoh Tonton Linux

  2. 5 Contoh Praktis Perintah "cd" di Linux

  3. Perintah Shutdown Linux:5 Contoh Praktis