دمج Regex مع sed/awk
ادمجوا التعبيرات النمطية في أوامر 'sed' و'awk' لتصفية النصوص واستبدالها واستخراج البيانات بطرق متقدمة.
دمج Regex مع sed/awk درس مجاني في Linux Command Line & Bash Scripting Mastery على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Command Line & Bash Scripting Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
التعبيرات النمطية مع sed وawk
مرحبًا بكم في الدرس الأخير حول التعبيرات النمطية! لقد تعلّمنا قوة Regex في مطابقة الأنماط.
والآن، لنضم هذه القوة إلى أداتين أساسيتين في Linux: sed (محرر التدفق) وawk (لغة فحص الأنماط ومعالجة البيانات). يتيح هذا التكامل إجراء عمليات متقدمة جدًا لتصفية النصوص واستبدالها واستخراج البيانات.
sed: التصفية باستخدام التعبيرات النمطية
يمكن لـsed استخدام التعبيرات النمطية لتصفية الأسطر. ويتيح العنوان /pattern/ لـsed تطبيق الأوامر على الأسطر التي تطابق التعبير النمطي المحدد فقط.
يمنع الخيار -n الإخراج الافتراضي، بينما يطبع p الأسطر المطابقة صراحةً.
echo -e "apple
banana
orange" | sed -n '/an/p'sed: الاستبدال باستخدام التعبيرات النمطية
يُعد الأمر s/regex/replacement/ في sed المجال الذي تتألق فيه التعبيرات النمطية حقًا في تحويل النصوص. إذ يمكنكم استبدال الأنماط التي يعثر عليها التعبير النمطي بنص جديد.
يستبدل العلم g جميع التكرارات في السطر، ويجعل i المطابقة غير حساسة لحالة الأحرف.
echo "Hello world, hello universe" | sed 's/hello/hi/gi'sed: مجموعات الالتقاط والمراجع الخلفية
تتيح لكم التعبيرات النمطية تعريف مجموعات الالتقاط باستخدام الأقواس (). ويمكنكم بعد ذلك الإشارة إلى النص الذي طابقته هذه المجموعات في سلسلة الاستبدال باستخدام المراجع الخلفية مثل \1 و\2 وغيرهما.
استخدموا -E مع sed من أجل صياغة التعبيرات النمطية الموسَّعة، مثل استخدام () من دون محارف الهروب.
echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'awk: تصفية السجلات باستخدام التعبيرات النمطية
يستخدم awk أنماط التعبيرات النمطية لتحديد السجلات (الأسطر) قبل تنفيذ الإجراءات. وإذا قُدّم نمط قبل كتلة إجراء {...}، فسيُنفَّذ الإجراء على الأسطر التي تطابق النمط فقط.
يشبه ذلك grep، لكنه يتيح معالجة أكثر تعقيدًا.
echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'awk: تطبيق التعبيرات النمطية على حقول محددة
يمكنكم تطبيق أنماط التعبيرات النمطية على حقول محددة في awk باستخدام عاملي ~ (يطابق) و!~ (لا يطابق). وهذا قوي جدًا عند التعامل مع البيانات المنظمة.
على سبيل المثال، يتحقق $1 ~ /pattern/ مما إذا كان الحقل الأول يطابق التعبير النمطي.
echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'awk: استخراج المطابقات (match، substr)
يوفر awk دوال مثل match(string, regex) للعثور على موضع المطابقة وطولها، وsubstr(string, start, length) لاستخراجها.
بعد استدعاء match()، يحتوي RSTART على موضع البداية، بينما يحتوي RLENGTH على طول المطابقة.
echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'awk: الاستبدال في الموضع (sub، gsub)
يحتوي awk أيضًا على دوال مضمّنة للاستبدال: sub(regex, replacement, target) للمطابقة الأولى، وgsub(regex, replacement, target) لجميع المطابقات.
إذا حُذف target، فسيُستخدم $0 (السجل بأكمله). ويمكنكم تحديد حقل مثل $1.
echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'الاختيار بين sed وawk
على الرغم من أن كلاً من sed وawk يمكنه استخدام التعبيرات النمطية للاستبدال والتصفية، فإن لكل منهما مجالًا يتفوق فيه:
- يكون
sedأفضل عمومًا في التحويلات والاستبدالات البسيطة سطرًا بسطر. فهو محرر تدفق. - يُعد
awkأقوى في معالجة البيانات المنظمة (الحقول)، وإجراء العمليات الحسابية، والتعامل مع المنطق الأكثر تعقيدًا أو الأنماط متعددة الأسطر. فهو لغة برمجة بحد ذاته.
وغالبًا ما يمكن ربطهما معًا باستخدام الأنابيب | لتنفيذ مهام معقدة جدًا.
تحدٍّ: الاستخراج والتحويل
تأملوا السطر النصي التالي:
Order#12345: ProductX - Price $19.99ما الأمر الذي سيستخرج السعر بشكل صحيح (مثل '19.99') ثم يغيّر رمز العملة إلى 'EUR'؟
مراجعة: التعبيرات النمطية مع sed وawk
لقد أتقنتم دمج التعبيرات النمطية مع sed وawk!
sedبارع في تصفية النص واستبداله سطرًا بسطر، باستخدام التعبيرات النمطية لمطابقة الأنماط واستبدالها بفعالية.- يوفر
awkنهجًا أكثر برمجية، إذ يتيح استخدام التعبيرات النمطية لتصفية السجلات، والمطابقة داخل حقول محددة، واستخراج البيانات وتعديلها باستخدام دوال مثلmatch()وsubstr()وsub()وgsub().
تُعد هذه المهارة ضرورية لمعالجة النصوص وكتابة البرامج النصية المتقدمة في Linux.
الأسئلة الشائعة
هل درس «دمج Regex مع sed/awk» مجاني؟
نعم — نص درس «دمج Regex مع sed/awk» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Command Line & Bash Scripting Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
ماذا ستتعلم في «دمج Regex مع sed/awk»؟
ادمجوا التعبيرات النمطية في أوامر 'sed' و'awk' لتصفية النصوص واستبدالها واستخراج البيانات بطرق متقدمة. تتمرن على Linux Command Line & Bash Scripting Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Linux Command Line & Bash Scripting Mastery؟
لا تُشترط خبرة سابقة. Linux Command Line & Bash Scripting Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «دمج Regex مع sed/awk»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Linux Command Line & Bash Scripting Mastery هذا؟
نعم. كل درس في Linux Command Line & Bash Scripting Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى Regular Expressions (Regex)
- Grep المتقدم باستخدام Regex
- دمج Regex مع sed/awk
- مجموعات الالتقاط والمراجع الخلفية والاستبدال