15 Petua dan Trik Perintah 'Sed' berguna untuk tugas pentadbiran sistem Linux setiap hari

15 Petua dan Trik Perintah 'Sed' berguna untuk tugas pentadbiran sistem Linux setiap hari

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 Linux

Dalam 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:

Ganti perkataan atau aksara dalam fail

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/selamat 
Lihat 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 fail

Petua 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.txt 
Fail 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.txt 
Gunakan 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.txt 
Tukar 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. 1 mewakili permulaan setiap baris sehingga koma.
  2. 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.txt 
Ganti 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 fail

15. 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 lain

Ringkasan

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