15 Tip dan trik perintah 'sed' yang berguna untuk tugas administrasi sistem linux harian

15 Tip dan trik perintah 'sed' yang berguna untuk tugas administrasi sistem linux harian

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

15 Tip dan trik perintah 'sed' yang berguna untuk Linux

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

1. Melihat berbagai baris dokumen

Alat seperti kepala dan ekor memungkinkan kita untuk melihat bagian bawah atau bagian atas file. Bagaimana jika kita perlu melihat bagian di tengah? Sed One-Liner berikut akan mengembalikan garis 5 melalui 10 dari file saya.txt:

# sed -n '5.10p' myfile.txt 

2. Melihat seluruh file kecuali rentang yang diberikan

Di sisi lain, mungkin Anda ingin mencetak seluruh file kecuali rentang tertentu. Untuk mengecualikan garis 20 melalui 35 dari file saya.txt, Mengerjakan:

# sed '20, 35d 'myfile.txt 

3. Melihat jalur dan rentang non-berturut-turut

Mungkin Anda tertarik pada set jalur non-berturut-turut, atau dalam lebih dari satu rentang. Mari Menampilkan Garis 5-7 Dan 10-13 dari file saya.txt:

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

Seperti yang Anda lihat, -e Opsi memungkinkan kami untuk menjalankan tindakan yang diberikan (dalam hal ini, garis cetak) untuk setiap rentang.

4. Mengganti kata atau karakter (substitusi dasar)

Untuk mengganti setiap contoh kata Versi: kapan dengan cerita di dalam file saya.txt, Mengerjakan:

# Sed 'S/Versi/Story/G' MyFile.txt 

Selain itu, Anda mungkin ingin mempertimbangkan untuk menggunakan GI alih-alih G Untuk mengabaikan kasus karakter:

# Sed 'S/Versi/Story/Gi' MyFile.txt 

Untuk mengganti beberapa ruang kosong dengan satu ruang, kami akan menggunakan output dari Tampilkan rute IP dan pipa:

# IP Route Show | sed 's/ *// g' 

Bandingkan output Tampilkan rute IP dengan dan tanpa pipa:

Ganti kata atau karakter dalam file

5. Mengganti kata atau karakter di dalam rentang

Jika Anda tertarik untuk mengganti kata hanya dalam jangkauan garis (30 melalui 40, Misalnya), Anda dapat melakukannya:

# sed '30, 40 s/versi/cerita/g 'myfile.txt 

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

6. Menggunakan ekspresi reguler (substitusi lanjutan) - i

Terkadang file konfigurasi dimuat dengan komentar. Meskipun ini tentu saja bermanfaat, kadang -kadang mungkin bermanfaat untuk menampilkan arahan konfigurasi jika Anda ingin melihatnya semuanya sekilas.

Untuk menghapus saluran kosong atau yang dimulai dengan # Dari file konfigurasi Apache, lakukan:

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

Tanda Caret diikuti oleh tanda angka (^#) menunjukkan awal garis, sedangkan ^$ mewakili garis kosong. Bilah vertikal menunjukkan operasi boolean, sedangkan tebasan ke belakang digunakan untuk melarikan diri dari batang vertikal.

Dalam kasus khusus ini, file konfigurasi Apache memiliki baris #'S tidak di awal beberapa baris, jadi *# digunakan untuk menghapusnya juga.

7. Menggunakan Ekspresi Reguler (Substitusi Lanjutan) - II

Untuk mengganti kata yang dimulai dengan huruf besar atau kecil dengan kata lain, kita juga dapat menggunakan sed. Untuk mengilustrasikan, mari kita ganti kata ritsleting atau Ritsleting dengan rar in file saya.txt:

# sed 's/[zz] ip/rar/g' myfile.txt 

Jangan lewatkan: Gunakan AWK dengan ekspresi reguler untuk memfilter teks dalam file

8. Melihat garis yang mengandung pola yang diberikan

Penggunaan lainnya sed terdiri dalam mencetak baris dari file yang cocok dengan ekspresi reguler yang diberikan. Misalnya, kami mungkin tertarik untuk melihat kegiatan otorisasi dan otentikasi yang terjadi 2 Juli, sesuai /var/log/aman Masuk a Centos 7 server.

Dalam hal ini, pola yang harus dicari 2 Jul Di awal setiap baris:

# sed -n '/^Jul 1/p'/var/log/aman 
Lihat log (baris) tanggal tertentu

9. Memasukkan spasi ke dalam file

Dengan sed, Kami juga dapat memasukkan spasi (baris kosong) untuk setiap baris yang tidak kosong dalam file. Untuk memasukkan satu baris kosong di setiap baris lain LISENSI, File teks biasa, lakukan:

# sed G myfile.txt 

Untuk memasukkan dua baris kosong, lakukan:

# sed 'g; g' myfile.txt 

Tambahkan huruf besar g dipisahkan oleh titik koma jika Anda ingin menambahkan lebih banyak garis kosong. Gambar berikut menggambarkan contoh yang diuraikan dalam tip ini:

Masukkan spasi dalam file

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

10. Meniru dos2unix dengan pengeditan inline

Itu dos2unix Program Mengonversi file teks biasa dari pemformatan Windows/Mac ke UNIX/Linux, menghapus karakter garis baru tersembunyi yang dimasukkan oleh beberapa editor teks yang digunakan dalam platform tersebut. Jika tidak diinstal dalam sistem Linux Anda, Anda dapat meniru fungsinya sed Alih -alih memasangnya.

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

# sed -i 's/\ r //' myfile.txt 
File teks terselubung dari windows ke linux

Harap dicatat bahwa -Saya Opsi menunjukkan pengeditan di tempat. Maka perubahan tidak akan dikembalikan ke layar, tetapi akan disimpan ke file.

Catatan: Anda dapat memasukkan karakter baru DOS saat mengedit file di editor vim dengan Ctrl+v Dan Ctrl+m.

11. Mengedit dan mendukung file asli

Di tip sebelumnya kami menggunakan sed Untuk memodifikasi file tetapi tidak menyimpan file asli. Terkadang adalah ide yang bagus untuk menyimpan salinan cadangan dari file asli untuk berjaga -jaga.

Untuk melakukan itu, tunjukkan akhiran yang mengikuti -Saya Opsi (di dalam satu kutipan) yang akan digunakan untuk mengganti nama file asli.

Dalam contoh berikut kita akan mengganti semua contoh ini atau Ini (mengabaikan kasus) dengan itu file saya.txt, dan kami akan menyimpan file asli sebagai file saya.txt.Orig.

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

# sed -i '.Orig "s/this/that/gi 'myfile.txt 
Gunakan Sed untuk mengedit dan mencadangkan file asli

12. Beralih sepasang kata

Misalkan Anda memiliki file yang berisi nama lengkap dalam format Nama depan, nama keluarga. Untuk memproses file secara memadai, Anda mungkin ingin beralih nama keluarga Dan Nama depan.

Kita bisa melakukannya dengan sed cukup mudah:

# sed 'S/^\ (.*\), \ (.*\) $ /\, /g 'nama.txt 
Beralih kata dalam file

Pada gambar di atas kita dapat melihat bahwa tanda kurung, menjadi karakter khusus, perlu diloloskan, seperti halnya angka -angka 1 Dan 2.

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

  1. 1 mewakili awal setiap baris hingga koma.
  2. 2 adalah placeholder untuk segala sesuatu yang benar dari koma ke ujung baris.

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

13. Mengganti kata hanya jika kecocokan terpisah ditemukan

Terkadang mengganti semua contoh kata yang diberikan, atau beberapa orang acak, tidak tepatnya yang kita butuhkan. Mungkin kita perlu melakukan penggantian jika kecocokan terpisah ditemukan.

Misalnya, kami mungkin ingin mengganti awal dengan berhenti hanya jika layanan kata ditemukan di baris yang sama. Dalam skenario itu, inilah yang akan terjadi:

Kita perlu mulai berpesta di tempat kerja, tetapi mari kita ingat untuk memulai semua layanan terlebih dahulu. 

Di baris pertama, awal tidak akan diganti dengan berhenti Karena layanan kata tidak muncul di baris itu, sebagai lawan dari baris kedua.

# sed '/services/s/start/stop/g' msg.txt 
Ganti kata dalam file

14. Melakukan dua atau lebih pengganti sekaligus

Anda dapat menggabungkan dua atau lebih substitusi satu sed memerintah. Mari kita ganti kata -kata itu dan atur file saya.txt dengan ini dan ayat, masing -masing.

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

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

Tip ini diilustrasikan dalam gambar berikut:

Ganti banyak kata dalam file

15. Menggabungkan Sed dan perintah lainnya

Tentu saja, sed dapat dikombinasikan dengan alat lain untuk membuat perintah yang lebih kuat. Misalnya, mari kita gunakan contoh yang diberikan Kiat #4 dan mengekstrak alamat IP kami dari output Rute IP memerintah.

Kita akan mulai dengan mencetak hanya garis di mana kata itu SRC adalah. Kemudian kita akan mengubah beberapa ruang menjadi satu di tempat lain. Akhirnya, kami akan memotong Ke -9 Bidang (mempertimbangkan satu ruang sebagai pemisah lapangan), di situlah alamat IP berada:

# IP Route Show | SED -N '/SRC/P' | sed -e/ *// g '| cut -d "-f9 

Gambar di bawah ini menggambarkan setiap langkah dari perintah di atas:

Gabungkan sed dengan perintah lain

Ringkasan

Dalam panduan ini kami telah berbagi 15 Tips dan Trik Sed Untuk membantu Anda dengan tugas administrasi sistem harian Anda. Apakah ada tip lain yang Anda gunakan secara teratur dan ingin berbagi dengan kami dan seluruh komunitas?

Jika demikian, jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah ini. Pertanyaan dan komentar juga disambut - kami berharap dapat mendengar dari Anda!

Jangan lewatkan: Menguasai perintah 'awk' Linux dengan tips dan trik