15 Tip dan trik perintah 'sed' yang berguna untuk tugas administrasi sistem linux harian
- 3185
- 809
- Hector Kuhic
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 LinuxDalam 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:
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/amanLihat 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 fileTip 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.txtFile 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.txtGunakan 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.txtBeralih 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 mewakili awal setiap baris hingga koma.
- 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.txtGanti 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 file15. 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 lainRingkasan
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
- « Pelajari cara menggunakan variabel awk, ekspresi numerik dan operator penugasan - Bagian 8
- 9 Alat Perbandingan dan Perbedaan File Terbaik (Diff) untuk Linux »