15 Petua dan Trik Perintah 'Sed' berguna untuk tugas pentadbiran sistem Linux setiap hari
- 1918
- 213
- Clay Weber
Setiap pentadbir sistem harus berurusan dengan fail teks biasa setiap hari. Mengetahui Cara Melihat Bahagian tertentu, Cara Mengganti Kata.
15 Petua dan Trik Perintah 'Sed' berguna untuk LinuxDalam artikel ini, kami akan mengkaji SED, editor aliran terkenal, dan berkongsi 15 petua untuk menggunakannya untuk mencapai matlamat yang disebutkan sebelumnya, dan banyak lagi.
1. Melihat pelbagai baris dokumen
Alat seperti kepala dan ekor membolehkan kita melihat bahagian bawah atau bahagian atas fail. Bagaimana jika kita perlu melihat bahagian di tengah? Satu-liner berikut akan mengembalikan baris 5 melalui 10 dari myfile.txt:
# sed -n '5,10p' myfile.txt
2. Melihat keseluruhan fail kecuali julat yang diberikan
Sebaliknya, mungkin anda ingin mencetak keseluruhan fail kecuali julat tertentu. Untuk mengecualikan baris 20 melalui 35 dari myfile.txt, lakukan:
# sed '20, 35d 'MyFile.txt
3. Melihat garis dan julat yang tidak berturut-turut
Mungkin anda berminat untuk menetapkan garis bukan berturut-turut, atau lebih dari satu julat. Mari memaparkan garis 5-7 dan 10-13 dari myfile.txt:
# sed -n -e '5,7p' -e '10, 13p 'myfile.txt
Seperti yang anda lihat, -e
Pilihan membolehkan kami melaksanakan tindakan yang diberikan (dalam kes ini, garis cetak) untuk setiap julat.
4. Menggantikan perkataan atau watak (penggantian asas)
Untuk menggantikan setiap contoh perkataan versi
dengan cerita
dalam myfile.txt, lakukan:
# sed 's/versi/cerita/g' myfile.txt
Di samping itu, anda mungkin ingin mempertimbangkan menggunakan gi
bukan g
Untuk mengabaikan kes watak:
# s/versi/cerita/gi 'myfile.txt
Untuk menggantikan pelbagai ruang kosong dengan satu ruang, kami akan menggunakan output Pertunjukan Laluan IP
dan saluran paip:
# Show Route IP | sed 's/ *// g'
Bandingkan output dari Pertunjukan Laluan IP
dengan dan tanpa saluran paip:
5. Menggantikan perkataan atau watak di dalam julat
Sekiranya anda berminat untuk menggantikan kata -kata hanya dalam julat baris (30 melalui 40, Sebagai contoh), anda boleh lakukan:
# sed '30, 40 s/versi/cerita/g 'myfile.txt
Sudah tentu, anda boleh menunjukkan satu baris melalui nombor yang sepadan dan bukannya julat.
6. Menggunakan ungkapan biasa (penggantian lanjutan) - i
Kadang -kadang fail konfigurasi dimuatkan dengan komen. Walaupun ini pasti berguna, mungkin berguna untuk memaparkan hanya arahan konfigurasi kadang -kadang jika anda ingin melihatnya semua sekilas.
Untuk membuang garis kosong atau yang bermula dengan #
Dari fail konfigurasi Apache, lakukan:
# sed '/^# \ |^$ \ | *#/d 'httpd.Conf
Tanda karet diikuti dengan tanda nombor (^#)
menunjukkan permulaan garis, sedangkan ^$
mewakili garis kosong. Bar menegak menunjukkan operasi boolean, sedangkan slash mundur digunakan untuk melarikan diri dari bar menegak.
Dalam kes ini, fail konfigurasi Apache mempunyai garis dengan #'s
bukan pada permulaan beberapa baris, jadi *#
digunakan untuk membuangnya juga.
7. Menggunakan Ekspresi Biasa (Penggantian Lanjutan) - II
Untuk menggantikan perkataan yang bermula dengan huruf besar atau huruf kecil dengan perkataan lain, kita juga boleh menggunakan sed. Untuk menggambarkan, mari menggantikan perkataan zip atau Zip dengan rar dalam myfile.txt:
# sed's/[zz] ip/rar/g 'myfile.txt
Jangan ketinggalan: Gunakan AWK dengan ungkapan biasa untuk menapis teks dalam fail
8. Melihat garis yang mengandungi corak yang diberikan
Satu lagi penggunaan sed terdiri daripada mencetak garisan dari fail yang sesuai dengan ungkapan biasa yang diberikan. Contohnya, kami mungkin berminat untuk melihat aktiviti kebenaran dan pengesahan yang berlaku 2 Julai, Seperti yang ada /var/log/selamat log masuk a Centos 7 pelayan.
Dalam kes ini, corak untuk mencari adalah 2 Jul Pada permulaan setiap baris:
# sed -n '/^1 Jul'/var/log/selamatLihat log (baris) tarikh tertentu
9. Memasukkan ruang dalam fail
Dengan sed, Kita juga boleh memasukkan ruang (garis kosong) untuk setiap baris yang tidak kosong dalam fail. Untuk memasukkan satu baris kosong setiap baris lain di Lesen, fail teks biasa, lakukan:
# sed g myfile.txt
Untuk memasukkan dua baris kosong, lakukan:
# sed 'g; g' myfile.txt
Tambah huruf besar g dipisahkan oleh titik koma jika anda ingin menambah lebih banyak baris kosong. Imej berikut menggambarkan contoh yang digariskan dalam hujung ini:
Masukkan ruang dalam failPetua ini mungkin berguna jika anda ingin memeriksa fail konfigurasi yang besar. Memasukkan ruang kosong setiap baris lain dan paip output ke kurang akan menghasilkan pengalaman membaca yang lebih mesra.
10. Meniru dos2unix dengan penyuntingan sebaris
The DOS2Unix Program menukarkan fail teks biasa dari pemformatan Windows/Mac ke Unix/Linux, mengeluarkan aksara baru yang tersembunyi yang dimasukkan oleh beberapa editor teks yang digunakan dalam platform tersebut. Sekiranya ia tidak dipasang dalam sistem Linux anda, anda boleh meniru fungsinya dengan sed bukannya memasangnya.
Dalam gambar di sebelah kiri kita dapat melihat beberapa watak baru DOS (^M)
, yang kemudiannya dikeluarkan dengan:
# sed -I 's/\ r //' myfile.txtFail teks rahsia dari tingkap ke linux
Sila ambil perhatian bahawa -i
pilihan menunjukkan penyuntingan di tempat. Kemudian perubahan tidak akan dikembalikan ke skrin, tetapi akan disimpan ke fail.
Catatan: Anda boleh memasukkan watak baru dos semasa menyunting fail di editor vim dengan Ctrl+V
dan Ctrl+m
.
11. Di tempat penyuntingan dan sandaran fail asal
Di hujung sebelumnya yang kami gunakan sed untuk mengubah suai fail tetapi tidak menyimpan fail asal. Kadang -kadang adalah idea yang baik untuk menyimpan salinan sandaran fail asal sekiranya berlaku.
Untuk melakukan itu, nyatakan akhiran mengikuti -i
pilihan (di dalam petikan tunggal) untuk digunakan untuk menamakan semula fail asal.
Dalam contoh berikut, kita akan menggantikan semua contoh ini atau Ini (mengabaikan kes) dengan itu myfile.txt, dan kami akan menyimpan fail asal sebagai myfile.txt.Orig.
Akhirnya, kami akan menggunakan utiliti diff untuk mengenal pasti perbezaan antara kedua -dua fail:
# sed -I '.orig "s/this/that/gi 'myfile.txtGunakan sed untuk mengedit dan sandarkan fail asal
12. Beralih pasangan perkataan
Katakan anda mempunyai fail yang mengandungi nama penuh dalam format Nama pertama, Nama terakhir. Untuk memproses fail dengan secukupnya, anda mungkin mahu menukar Nama terakhir dan Nama pertama.
Kita boleh melakukannya dengan sed Cukup mudah:
# sed's/^\ (.*\), \ (.*\) $ /\, /g 'nama.txtTukar perkataan dalam fail
Dalam imej di atas kita dapat melihat tanda kurung itu, menjadi watak khas, perlu melarikan diri, seperti nombornya 1 dan 2.
Nombor ini mewakili ungkapan biasa yang diketengahkan (yang perlu muncul di dalam kurungan):
- 1 mewakili permulaan setiap baris sehingga koma.
- 2 adalah pemegang tempat untuk semua yang betul dari koma hingga akhir garis.
Output yang dikehendaki ditunjukkan dalam format Secondcolumn (Nama terakhir) + koma + ruang + FirstColumn (Nama pertama). Jangan ragu untuk mengubahnya kepada apa sahaja yang anda mahukan.
13. Menggantikan kata -kata hanya jika perlawanan berasingan dijumpai
Kadang -kadang menggantikan semua contoh perkataan tertentu, atau sedikit rawak, tidak tepat apa yang kita perlukan. Mungkin kita perlu melakukan penggantian jika perlawanan berasingan dijumpai.
Contohnya, kita mungkin mahu menggantikannya Mula dengan Berhenti Hanya jika perkhidmatan perkataan dijumpai dalam baris yang sama. Dalam senario itu, inilah yang akan berlaku:
Kita perlu mula berpesta di tempat kerja, tetapi ingatlah untuk memulakan semua perkhidmatan terlebih dahulu.
Di baris pertama, Mula tidak akan digantikan dengan Berhenti Oleh kerana perkhidmatan perkataan tidak muncul dalam baris itu, berbanding dengan baris kedua.
# sed '/perkhidmatan/s/start/stop/g' msg.txtGanti perkataan dalam fail
14. Melakukan dua atau lebih penggantian sekaligus
Anda boleh menggabungkan dua atau lebih pengganti satu single sed perintah. Mari menggantikan kata -kata yang dan garis masuk myfile.txt dengan ini dan ayat, masing -masing.
Perhatikan bagaimana ini dapat dilakukan dengan menggunakan biasa sed Perintah penggantian diikuti oleh titik koma dan perintah penggantian kedua:
# sed -I 's/that/this/gi; s/line/verse/gi' myfile.txt
Petua ini digambarkan dalam imej berikut:
Ganti pelbagai perkataan dalam fail15. Menggabungkan sed dan arahan lain
Sudah tentu, sed boleh digabungkan dengan alat lain untuk membuat arahan yang lebih kuat. Contohnya, mari kita gunakan contoh yang diberikan Petua #4 dan ekstrak alamat IP kami dari output Laluan IP
perintah.
Kita akan mulakan dengan mencetak hanya garis di mana perkataan SRC
adalah. Kemudian kami akan menukar pelbagai ruang menjadi satu. Akhirnya, kami akan memotong Ke -9 medan (mempertimbangkan ruang tunggal sebagai pemisah medan), di mana alamat IP adalah:
# Show Route IP | sed -n '/src/p' | sed -E 's/ *// g' | potong -d "-f9
Imej di bawah menggambarkan setiap langkah perintah di atas:
Menggabungkan sed dengan arahan lainRingkasan
Dalam panduan ini kami telah berkongsi 15 petua dan tip untuk membantu anda dengan tugas pentadbiran sistem harian anda. Adakah terdapat tip lain yang anda gunakan secara teratur dan ingin berkongsi dengan kami dan seluruh masyarakat?
Jika ya, jangan ragu untuk memberitahu kami menggunakan borang komen di bawah. Soalan dan komen juga dialu -alukan - kami berharap dapat mendengar daripada anda!
Jangan ketinggalan: Menguasai perintah Linux 'Awk' dengan petua dan tip
- « Ketahui Cara Menggunakan Pembolehubah Awk, Ekspresi Numerik dan Pengendali Tugasan - Bahagian 8
- 9 Alat Perbandingan dan Perbezaan Fail Terbaik (Diff) untuk Linux »