GNU/Linux >> Belajar Linux >  >> Linux

Memanipulasi teks dengan sed dan grep

Alat seperti sed (editor aliran) dan grep (cetakan ekspresi reguler global) adalah cara ampuh untuk menghemat waktu dan membuat pekerjaan Anda lebih cepat. Sebelum menyelam jauh ke dalam kasus penggunaan, saya ingin menjelaskan secara singkat ekspresi reguler (regex), yang diperlukan untuk manipulasi teks yang akan kita lakukan nanti.

Apa itu ekspresi reguler? Saat kami menangani file log, file teks, atau sepotong kode, kami

perlu dipahami bahwa semua ini terdiri dari karakter. Ketika panjang file besar, menjadi suatu keharusan untuk menyaring pola-pola tertentu untuk membuat debugging Anda lebih mudah. Anda akan menemukan contoh ekspresi reguler di seluruh kasus penggunaan ini.

Grup 1:Data server

Katakanlah Anda memiliki file yang memiliki kemunculan string:

Sekarang, bagaimana Anda memfilter site1 's (file di atas adalah contoh sederhana), sehingga Anda hanya dapat mengambil info yang diperlukan dan memanipulasi entri?

Jelas, kita dapat melihat ada pola umum ("Penyebaran Cloud") di seluruh file. Jadi, sekarang kita bisa menggunakan teknik filtering untuk mengambil info dari file menggunakan grep . Saya ingat ini sebagai "dapatkan regex n print."

Use case 1

Jika saya ingin server dari wilayah yang berbeda, saya dapat menggunakan grep sebagai berikut:

Kasus penggunaan 2

Sekarang, katakan bahwa Anda tahu ingin menyaring server berdasarkan IP. Anda dapat melakukan hal yang sama menggunakan:

Kasus penggunaan 3

Sekarang, lihat grep pertama gambar perintah. Meskipun Anda mengetahui jangkauan subnet sistem Anda, perintah tersebut mencetak kemunculan 10.1 di seluruh file.

Bagaimana Anda bisa memecahkan kasus penggunaan jenis ini? Kami dapat menangani masalah ini menggunakan pemfilteran lanjutan berbasis regex, seperti ini:

Contoh ini hanyalah kemungkinan penggunaan grep . Sekali lagi, karena ini adalah file yang relatif kecil, Anda bisa mendapatkan apa yang Anda inginkan menggunakan apa yang ditunjukkan di atas. -v switch membalikkan kriteria pencarian, artinya grep mencari file sed-grep.txt dan mencetak semua detail, tidak termasuk <search-pattern> (10.1. dalam hal ini).

Use case 4

Katakanlah Anda ingin mengganti alamat IP dan memindahkan semua server di wilayah tersebut ke subnet yang berbeda. Anda dapat menggunakan sed untuk kasus penggunaan ini.

Dari halaman manual, sed menggunakan format:

sed [options] commands [file-to-edit]

Perintah kami untuk kasus penggunaan ini mungkin terlihat seperti ini:

Perintah ini dipecah sebagai berikut:

  • s singkatan dari pengganti.
  • % adalah pembatas (kita bisa menggunakan karakter apa saja di sini).
  • <search pattern> muncul setelah % first pertama .
  • <replace pattern> muncul setelah % second kedua .
  • g singkatan dari global replace (artinya seluruh file).

Atau:

s%<search-pattern>%<replace-pattern>%g

Kasus penggunaan 5

Anda bahkan dapat mengubah wilayah server dalam file:

Kasus penggunaan 6

Kasus penggunaan ini lebih maju. Kami hanya akan menghapus komentar (# ) dari file menggunakan sed :

Perintah ini mengatakan bahwa jika # muncul sebagai karakter pertama baris, untuk mengganti baris tersebut dengan spasi kosong. Akibatnya, perintah ini melakukan tugas menghapus komentar dari file.

Grup 2:/etc/passwd

Mari kita lihat beberapa kasus penggunaan lagi, kali ini melibatkan /etc/passwd .

Use case 1

Asumsikan Anda ingin mengambil pengguna dari file /etc/passwd mengajukan. Anda dapat menggunakan sed sebagai berikut:

Kasus penggunaan 2

Bagaimana jika Anda hanya ingin mengambil 10 pengguna pertama dari /etc/passwd ? Anda dapat menggunakan sed dan awk untuk tujuan ini (tolong bersama saya di sini): 

Perintah ini dipecah menjadi:

  • sed -n artinya jangan cetak semuanya.
  • p mencetak baris satu sampai 10.
  • awk di sini menggunakan : sebagai pemisah bidang dan mencetak kolom pertama.

Use case 3

Hapus rentang baris tertentu dalam file teks menggunakan sed :

Kasus penggunaan SELinux

Berikut adalah contoh sed perintah untuk memanipulasi SELinux:

Kesimpulan

Ini adalah upaya saya untuk memberi Anda pembaca sekilas tentang kemungkinan menggunakan sed dan grep . Anda dapat melakukan banyak manipulasi teks menggunakan perintah ini. Lihat opsi yang berbeda menggunakan halaman manual untuk mempelajari lebih lanjut.

[Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis.]


Linux
  1. Mencantumkan semua alamat email dalam file dengan grep

  2. Temukan File dengan Perintah Temukan dan Temukan di Linux

  3. Bagaimana melakukan sed like text ganti dengan python?

  1. Ekstrak Substring Menurut Regexp Dengan Sed Atau Grep?

  2. Gunakan sed dengan huruf besar-kecil sambil menambahkan teks sebelum beberapa pola

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  1. Beberapa File Teks Ganti Dengan Sed?

  2. Hapus kemunculan string dalam file teks

  3. Bagaimana cara menyisipkan teks di awal file?