Menggabungkan Regex dengan sed/awk
Sepadukan ungkapan nalar ke dalam perintah 'sed' dan 'awk' untuk penapisan teks, penggantian dan pengekstrakan data lanjutan.
Menggabungkan Regex dengan sed/awk ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Regex dengan sed dan awk
Selamat datang ke pelajaran terakhir tentang Ungkapan Nalar! Kita telah mempelajari kuasa regex untuk pemadanan corak.
Kini, mari kita gabungkan kuasa itu dengan dua alat Linux penting: sed (penyunting strim) dan awk (bahasa pengimbasan dan pemprosesan corak). Penyepaduan ini membolehkan penapisan teks, penggantian dan pengekstrakan data yang sangat lanjutan.
sed: Menapis dengan Regex
sed boleh menggunakan ungkapan nalar untuk menapis baris. Alamat /pattern/ membolehkan sed menggunakan perintah hanya pada baris yang sepadan dengan regex yang diberikan.
Pilihan -n menyekat output lalai, manakala p mencetak baris yang sepadan secara jelas.
echo -e "apple
banana
orange" | sed -n '/an/p'sed: Menggantikan dengan Regex
Perintah s/regex/replacement/ dalam sed benar-benar menyerlahkan kegunaan regex untuk mengubah teks. Anda boleh menggantikan corak yang ditemui oleh regex dengan teks baharu.
Bendera g menggantikan semua kemunculan dalam satu baris, manakala i menjadikan pemadanan tidak peka huruf besar kecil.
echo "Hello world, hello universe" | sed 's/hello/hi/gi'sed: Kumpulan Tangkapan & Rujukan Balik
Ungkapan nalar membolehkan anda mentakrifkan kumpulan tangkapan menggunakan kurungan (). Anda kemudian boleh merujuk teks yang sepadan dengan kumpulan ini dalam rentetan penggantian menggunakan rujukan balik seperti \1, \2 dan sebagainya.
Gunakan -E dengan sed untuk sintaks regex lanjutan, contohnya untuk menggunakan () tanpa aksara pelepas.
echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'awk: Menapis Rekod dengan Regex
awk menggunakan corak regex untuk memilih rekod (baris) sebelum melaksanakan tindakan. Jika corak diberikan sebelum blok tindakan {...}, tindakan itu hanya dilaksanakan untuk baris yang sepadan dengan corak.
Ini serupa dengan grep, tetapi membolehkan pemprosesan yang lebih kompleks.
echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'awk: Regex pada Medan Tertentu
Anda boleh menggunakan corak regex pada medan tertentu dalam awk menggunakan operator ~ (sepadan) dan !~ (tidak sepadan). Ini sangat berkuasa untuk data berstruktur.
Contohnya, $1 ~ /pattern/ menyemak sama ada medan pertama sepadan dengan regex.
echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'awk: Mengekstrak Padanan (match, substr)
awk menyediakan fungsi seperti match(string, regex) untuk mencari kedudukan dan panjang padanan, serta substr(string, start, length) untuk mengekstraknya.
Selepas match(), RSTART menyimpan kedudukan awal dan RLENGTH menyimpan panjang padanan.
echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'awk: Penggantian di Tempat (sub, gsub)
awk juga mempunyai fungsi terbina dalam untuk penggantian: sub(regex, replacement, target) untuk padanan pertama dan gsub(regex, replacement, target) untuk semua padanan.
Jika target tidak diberikan, $0 (keseluruhan rekod) akan digunakan. Anda boleh menentukan medan seperti $1.
echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'Memilih antara sed dan awk
Walaupun kedua-dua sed dan awk boleh menggunakan regex untuk penggantian dan penapisan, kedua-duanya lebih unggul dalam bidang yang berbeza:
sedbiasanya lebih baik untuk transformasi dan penggantian mudah baris demi baris. Ia ialah penyunting strim.awklebih berkuasa untuk memproses data berstruktur (medan), menjalankan pengiraan dan mengendalikan logik yang lebih kompleks atau corak berbilang baris. Ia sendiri ialah bahasa pengaturcaraan.
Selalunya, kedua-duanya boleh dirangkaikan menggunakan paip | untuk tugasan yang sangat kompleks.
Cabaran: Ekstrak & Transformasikan
Perhatikan baris teks berikut:
Order#12345: ProductX - Price $19.99Perintah manakah yang akan mengekstrak harga dengan betul (contohnya, '19.99') dan kemudian menukar simbol mata wang kepada 'EUR'?
Imbas Kembali: Regex dengan sed & awk
Anda telah menguasai penggabungan Ungkapan Nalar dengan sed dan awk!
sedcemerlang dalam menapis dan menggantikan teks baris demi baris, dengan menggunakan regex untuk pemadanan corak dan penggantian yang berkuasa.awkmenyediakan pendekatan yang lebih berasaskan pengaturcaraan, yang membolehkan regex menapis rekod, membuat padanan dalam medan tertentu serta mengekstrak atau mengubah suai data menggunakan fungsi sepertimatch(),substr(),sub()dangsub().
Kemahiran ini penting untuk pemprosesan teks dan penskripan lanjutan dalam Linux.
Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 142
- Pelajaran
- 568
Soalan Lazim
Adakah pelajaran “Menggabungkan Regex dengan sed/awk” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Menggabungkan Regex dengan sed/awk”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Menggabungkan Regex dengan sed/awk”?
Sepadukan ungkapan nalar ke dalam perintah 'sed' dan 'awk' untuk penapisan teks, penggantian dan pengekstrakan data lanjutan. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Menggabungkan Regex dengan sed/awk” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?
Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengenalan kepada Ungkapan Nalar (Regex)
- Grep Lanjutan dengan Regex
- Menggabungkan Regex dengan sed/awk
- Kumpulan Tangkapan, Rujukan Belakang dan Penggantian