15 Tip Perintah Sed untuk Tugas Administrasi Sistem Linux


Setiap administrator sistem harus berurusan dengan file teks biasa setiap hari. Mengetahui cara melihat bagian tertentu, cara mengganti kata, dan cara memfilter konten dari file tersebut adalah keterampilan yang perlu Anda miliki tanpa harus melakukan pencarian Google.

Dalam artikel ini kami akan meninjau sed, editor aliran terkenal, dan berbagi 15 tips menggunakannya guna mencapai tujuan yang disebutkan sebelumnya, dan banyak lagi.

Apa itu Perintah Sed?

Perintah 'sed', kependekan dari editor aliran, adalah alat manipulasi teks serbaguna dan kuat yang beroperasi pada aliran teks, memungkinkan pengguna melakukan berbagai operasi pada data, seperti pencarian, penggantian, penyisipan, dan menghapus. 'Sed' menggunakan ekspresi reguler untuk menentukan pola manipulasi teks, dan dapat digunakan untuk tugas pengeditan batch dan pemrosesan teks dalam skrip.

Salah satu fitur utamanya adalah pengeditan di tempat, yang memungkinkan Anda memodifikasi file secara langsung atau membuat salinan cadangan sambil melakukan perubahan. 'Sed' adalah alat penting untuk administrator sistem, pemrogram, dan siapa pun yang berurusan dengan tugas transformasi teks dan manipulasi data di baris perintah.

Berikut adalah beberapa perintah umum 'sed' beserta contohnya:

1. Melihat Rentang Garis suatu File

Alat seperti head dan tail memungkinkan kita melihat bagian bawah atau atas suatu file. Bagaimana jika kita perlu melihat bagian di tengah? Sed one-liner berikut akan mengembalikan baris 5 hingga 10 dari tecmint.txt:

sed -n '5,10p' tecmint.txt

2. Melihat Seluruh File Kecuali Rentang Tertentu

Di sisi lain, mungkin saja Anda ingin mencetak seluruh file kecuali rentang tertentu. Untuk mengecualikan baris 20 sampai 35 dari tecmint.txt, lakukan:

sed '20,35d' myfile.txt

3. Melihat Garis dan Rentang yang Tidak Berturut-turut

Mungkin Anda tertarik pada serangkaian garis yang tidak berurutan, atau lebih dari satu rentang. Mari kita tampilkan baris 5-7 dan 10-13 dari tecmint.txt:

sed -n -e '5,7p' -e '10,13p' tecmint.txt

Seperti yang Anda lihat, opsi -e memungkinkan kita mengeksekusi tindakan tertentu (dalam hal ini, mencetak baris) untuk setiap rentang.

4. Mengganti Kata atau String pada File

Untuk mengganti setiap kemunculan kata version dengan story di tecmint.txt, lakukan:

sed 's/version/story/g' tecmint.txt

Selain itu, Anda mungkin ingin mempertimbangkan untuk menggunakan gi daripada g untuk mengabaikan huruf besar-kecil:

sed 's/version/story/gi' myfile.txt

Untuk mengganti beberapa spasi kosong dengan satu spasi, kita akan menggunakan output dari perintah ip routing show dengan pipeline:

ip route show | sed 's/  */ /g'

Bandingkan output dari ip Route Show dengan dan tanpa pipeline:

5. Mengganti Kata atau String di Dalam Suatu Range

Jika Anda tertarik untuk mengganti kata-kata hanya dalam rentang garis (misalnya, 30 hingga 40), Anda dapat melakukan:

sed '30,40 s/version/story/g' tecmint.txt

Tentu saja, Anda dapat menunjukkan satu baris melalui nomor yang sesuai, bukan rentang.

6. Hapus Komentar Dari File

Terkadang file konfigurasi dimuat dengan komentar. Meskipun hal ini tentu berguna, kadang-kadang mungkin berguna untuk hanya menampilkan arahan konfigurasi jika Anda ingin melihat semuanya secara sekilas.

Untuk menghapus baris kosong atau yang diawali dengan # dari file konfigurasi Apache, lakukan:

sed '/^#\|^$\| *#/d' httpd.conf

Tanda sisipan diikuti dengan tanda angka (^#) menunjukkan awal suatu baris, sedangkan ^$ melambangkan baris kosong. Bilah vertikal menunjukkan operasi boolean, sedangkan garis miring ke belakang digunakan untuk keluar dari bilah vertikal.

Dalam kasus khusus ini, file konfigurasi Apache memiliki baris dengan #’s bukan di awal beberapa baris, jadi *# juga digunakan untuk menghapus baris tersebut.

7. Ganti Kata yang Tidak Peka Huruf Besar-kecil dalam File

Untuk mengganti kata yang diawali huruf besar atau huruf kecil dengan kata lain, kita juga bisa menggunakan sed. Sebagai ilustrasi, mari kita ganti kata zip atau Zip dengan rar di tecmint.txt:

sed 's/[Zz]ip/rar/g' tecmint.txt

8. Menemukan Peristiwa Tertentu dalam File Log

Kegunaan lain dari sed adalah mencetak baris dari file yang cocok dengan ekspresi reguler tertentu. Misalnya, kami mungkin tertarik untuk melihat aktivitas otorisasi dan autentikasi yang terjadi pada 2 Juli, sesuai dengan /var /log/secure masuk ke server CentOS.

Dalam hal ini, pola yang dicari adalah 2 Juli di awal setiap baris:

sed -n '/^Jul  1/ p' /var/log/secure

9. Menyisipkan Spasi atau Baris Kosong pada File

Dengan sed, kita juga dapat menyisipkan spasi (baris kosong) untuk setiap baris yang tidak kosong dalam sebuah file. Untuk menyisipkan satu baris kosong ke setiap baris lainnya di LICENSE, file teks biasa, lakukan:

sed G tecmint.txt

Untuk menyisipkan dua baris kosong, lakukan:

sed 'G;G' tecmint.txt

Tambahkan huruf besar G yang dipisahkan dengan titik koma jika Anda ingin menambahkan lebih banyak baris kosong. Gambar berikut mengilustrasikan contoh yang diuraikan dalam tip ini:

Tip ini mungkin berguna jika Anda ingin memeriksa file konfigurasi besar. Memasukkan ruang kosong di setiap baris lainnya dan menyalurkan hasilnya lebih sedikit akan menghasilkan pengalaman membaca yang lebih ramah.

10. Menghapus ^M dalam File

Program dos2unix mengkonversi file teks biasa dari format Windows/Mac ke Unix/Linux, menghapus karakter baris baru tersembunyi yang disisipkan oleh beberapa editor teks yang digunakan pada platform tersebut. Jika tidak diinstal di sistem Linux Anda, Anda dapat meniru fungsinya dengan sed alih-alih menginstalnya.

Pada gambar di sebelah kiri kita dapat melihat beberapa karakter baris baru DOS (^M), yang kemudian dihapus dengan:

sed -i 's/\r//' myfile.txt

Harap perhatikan bahwa opsi -i menunjukkan pengeditan di tempat. Kemudian perubahan tidak akan dikembalikan ke layar tetapi akan disimpan ke file.

Catatan: Anda dapat menyisipkan karakter baris baru DOS saat mengedit file di editor Vim dengan Ctrl+V dan Ctrl+M.

11. Buat File Cadangan dengan Perintah Sed

Pada tip sebelumnya, kita menggunakan sed untuk memodifikasi file tetapi tidak menyimpan file aslinya. Terkadang ada baiknya untuk menyimpan salinan cadangan dari file asli untuk berjaga-jaga.

Untuk melakukannya, tunjukkan akhiran setelah opsi -i (di dalam tanda kutip tunggal) yang akan digunakan untuk mengganti nama file asli.

Dalam contoh berikut, kita akan mengganti semua contoh ini atau Ini (mengabaikan huruf besar/kecil) dengan itu di filesaya.txt, dan kita akan menyimpan file asli sebagai myfile.txt.orig.

Terakhir, kami akan menggunakan utilitas diff untuk mengidentifikasi perbedaan antara kedua file:

sed -i'.orig' 's/this/that/gi' myfile.txt

12. Mengganti Pasangan Kata dalam File

Misalkan Anda memiliki file yang berisi nama lengkap dengan format Nama depan, Nama belakang. Agar dapat memproses file secara memadai, Anda mungkin ingin mengganti Nama belakang dan Nama depan.

Kita dapat melakukannya dengan sed dengan cukup mudah:

sed 's/^\(.*\),\(.*\)$/\, /g' names.txt

Pada gambar di atas kita dapat melihat bahwa tanda kurung, sebagai karakter khusus, perlu di-escape, seperti halnya angka 1 dan 2.

Angka-angka ini mewakili ekspresi reguler yang disorot (yang harus muncul di dalam tanda kurung):

  • 1 mewakili awal setiap baris hingga koma.
  • 2 adalah pengganti untuk semua yang berada di kanan koma hingga akhir baris.

Output yang diinginkan ditunjukkan dalam format SecondColumn (Nama belakang) + koma + spasi + FirstColumn (Nama depan). Jangan ragu untuk mengubahnya menjadi apa pun yang Anda inginkan.

13. Mengganti Kata Hanya jika Ditemukan Kecocokan Terpisah

Terkadang mengganti semua contoh kata tertentu, atau beberapa kata acak, bukanlah hal yang kita perlukan. Mungkin kita perlu melakukan penggantian jika ditemukan kecocokan terpisah.

Misalnya, kita mungkin ingin mengganti start dengan stop hanya jika kata services ditemukan pada baris yang sama. Dalam skenario tersebut, inilah yang akan terjadi:

We need to start partying at work,
but let’s remember to start all services first.

Pada baris pertama, start tidak akan diganti dengan stop karena kata services tidak muncul di baris tersebut, berbeda dengan baris kedua.

sed '/services/ s/start/stop/g' msg.txt

14. Melakukan Dua Pergantian Pemain atau Lebih Sekaligus

Anda dapat menggabungkan dua atau lebih substitusi dalam satu perintah sed. Mari kita ganti kata that dan baris di myfile.txt dengan This dan verse.

Perhatikan bagaimana hal ini dapat dilakukan dengan menggunakan perintah substitusi sed biasa diikuti dengan titik koma dan perintah substitusi kedua:

sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

Tip ini diilustrasikan pada gambar berikut:

15. Menggabungkan Sed dan Perintah Lainnya

Tentu saja, sed dapat digabungkan dengan perintah Linux lainnya untuk menghasilkan perintah yang lebih kuat. Sebagai contoh, mari kita gunakan contoh yang diberikan di TIP #4 dan mengekstrak alamat IP kita dari output perintah ip rute.

Kita akan mulai dengan mencetak hanya baris dimana kata src berada. Kemudian kita akan mengubah beberapa ruang menjadi satu ruang. Terakhir, kita akan memotong kolom ke-9 (mengingat satu spasi sebagai pemisah kolom), yang merupakan tempat alamat IP berada:

ip route show | sed -n '/src/p' | sed -e 's/  */ /g' | cut -d' ' -f9

Gambar di bawah mengilustrasikan setiap langkah dari perintah di atas:

Ringkasan

Dalam panduan ini, kami telah membagikan 15 tips dan trik untuk membantu Anda dalam tugas administrasi sistem harian Anda. Apakah ada tip lain yang Anda gunakan secara rutin dan ingin Anda bagikan kepada kami dan komunitas lainnya?

Jika demikian, silakan beri tahu kami menggunakan formulir komentar di bawah. Pertanyaan dan komentar juga diterima – kami menantikan tanggapan Anda!