أفضل الطرق للبحث عن نص واستبداله في محطة طرفية Linux
إذا كنت تعمل بشكل مستمر على محطة طرفية Linux، فقد تحتاج إلى إجراء تعديلات سريعة على الملفات النصية باستخدام أوامر البحث والاستبدال. تعد هذه العمليات أساسية لتحسين الكفاءة وتقليل الوقت الذي تستغرقه في إدارة الملفات النصية. في هذا المقال، ستتعرف على أبرز الطرق التي يمكنك من خلالها البحث عن نص واستبداله باستخدام أوامر بسيطة في محطة طرفية Linux، مما يجعل التعديل على النصوص أسرع وأكثر مرونة.
قد يستغرق تحرير ملف تكوين أو تحديث مستند كبير من خلال المرور على كل سطر يدويًا الكثير من الوقت. ومع ذلك، باستخدام أدوات سطر الأوامر مثل sed وawk وVim وغيرها، يمكنك جعل عملية البحث والاستبدال سريعة وفعالة.
Table of Contents
Toggleاستخدم الأمر sed
هل تريد استبدالات نصية سريعة؟ استخدم الأمر sed. باستخدام الأمر sed، يمكنك البحث عن نص وتعديله داخل الملفات، والتعامل مع كل شيء من الاستبدالات البسيطة إلى التلاعبات النصية المعقدة.
لنفترض أن لديك ملفًا باسم example.txt يحتوي على كلمة “Linux”، وتقرر استبداله بكلمة “Windows”. للقيام بذلك، قم بتشغيل:
sed 's/Linux/Windows/g' example.txt
هنا، يشير العلم s إلى الاستبدال، ويسمح العلم g لـ sed باستبدال جميع تكرارات النمط في كل سطر.
لا يعدل الأمر السابق الملف الأصلي بشكل مباشر؛ فهو يعرض فقط الناتج المعدل في المحطة الطرفية. ومع ذلك، إذا كنت تريد معالجة الملف الأصلي بشكل مباشر، فاستخدم العلم -i:
sed -i 's/Linux/Windows/g' example.txt
يؤدي العلم -i إلى إجراء التغييرات مباشرة في الملف بدلاً من عرض الناتج فقط.
هل تريد عمل نسخة احتياطية لملفك قبل إجراء التغييرات؟ أضف ملحقًا إلى العلم -i:
sed -i.bak 's/Linux/Windows/g' example.txt
يؤدي هذا إلى إنشاء ملف احتياطي يسمى example.txt.bak قبل إجراء أي تغييرات.
ولكن ماذا لو كنت تريد أن يظل ملفك الأصلي دون تغيير؟ يمكنك إنشاء ملف جديد وحفظ الناتج المعدّل فيه باستخدام عامل إعادة التوجيه.
على سبيل المثال، لإرسال الناتج إلى ملف منفصل، استخدم:
sed 's/Linux/Windows/g' example.txt > file.txt
يتيح لك استخدام أنماط التعبيرات العادية المعقدة مع sed التحكم في العناصر التي سيتم استبدالها في الملفات الأكبر حجمًا ذات المحتوى المتكرر. لاستبدال عدة نسخ بأمر واحد، قم بتشغيل:
sed -i 's/Linux\|Ubuntu/Windows/g' example.txt
إحدى الحيل التي أستخدمها غالبًا مع sed هي التبديل إلى فاصل مختلف إذا كانت سلاسل البحث أو الاستبدال تحتوي على خطوط مائلة للأمام. على سبيل المثال، عندما أعمل مع مسارات الملفات، أحب استخدام الرمز @ كفاصل:
sed 's@old/path@new/path@g' file.txt
يجعل هذا الأمر أسهل في القراءة ويتجنب الحاجة إلى العديد من أحرف الإفلات.
استبدال النص باستخدام أمر awk
مثل sed، يقوم awk أيضًا بإجراء معالجة نصية بسيطة إلى متقدمة. غالبًا ما أستخدم awk للتعامل مع البيانات المنظمة، وخاصة مع ملفات CSV، حيث قد تكون هناك حاجة إلى الحسابات على الحقول المحددة.
على الرغم من أن awk معروف بإدارة البيانات المنظمة، إلا أنه فعال أيضًا لمهام البحث والاستبدال السريعة. على سبيل المثال، لاستبدال نص معين في ملف، يمكنك استخدام:
awk '{gsub(/Windows/, "Linux"); print}' file.txt > new_file.txt
هنا، تقوم دالة gsub بإجراء استبدال عالمي، واستبدال كل تكرار لكلمة “Windows” بكلمة “Linux” عبر كل سطر في الملف. ونظرًا لأن awk لا يعدل الملفات بشكل مباشر، فإننا نعيد توجيه الإخراج إلى new_file.txt لالتقاط التغييرات.
كما أستخدم awk لتنظيف عمليات تصدير البيانات، وخاصة من جداول البيانات، حيث يمكن أن يؤدي التنسيق الإضافي إلى تعقيد معالجة البيانات. تتضمن العديد من عمليات تصدير جداول البيانات علامات اقتباس حول القيم، مما قد يعطل معالجة البيانات في التطبيقات الأخرى.
يمكنك إزالة جميع علامات الاقتباس المزدوجة من العمود الأول من ملف CSV باستخدام هذا الأمر:
awk -F, '{gsub(/"/, "", $1); print}' data.csv > cleaned_data.csv
هنا، يقوم gsub بإزالة كل علامات الاقتباس المزدوجة من العمود الأول فقط، ويتم إعادة توجيه الإخراج إلى ملف cleaning_data.csv للاستخدام الإضافي.
استبدال النص باستخدام وضع Vim Ex
هل تريد تحويلات نصية سريعة دون فتح المحرر الكامل؟ جرِّب Vim (Vi Improved)، وهو محرر نصوص مع وضع Ex الذي يسمح لك بإجراء عمليات البحث والاستبدال مباشرة من سطر الأوامر.
للبدء، افتح ملفك باستخدام Vim:
vim filename.txt
بعد ذلك، ادخل إلى وضع Ex بالضغط على Esc، ثم استخدم مفتاح (:). سيؤدي هذا إلى ظهور علامة النقطتين (:) أسفل المحطة الطرفية، مما يشير إلى أنك في وضع Ex. للبحث عن نص واستبداله، استخدم هذا الأمر:
:%s/macOS/Linux/g
يستبدل هذا الأمر جميع تكرارات “macOS” بـ “Linux” في الملف بالكامل. يشير الرمز % إلى أن الأمر يجب أن ينطبق على الملف بالكامل، ويضمن العلم g في النهاية استبدال جميع التكرارات في كل سطر، وليس فقط التكرار الأول.
لاستبدال التكرار الأول فقط في كل سطر، ما عليك سوى حذف العلم g:
:%s/macOS/Linux/
هل تحتاج إلى استبدال نص ضمن نطاق معين من الأسطر؟ حدد نطاق الأسطر. على سبيل المثال، لاستبدال نص من السطر 3 إلى السطر 10:
:3,10s/macOS/Linux/g
إحدى العادات التي أتبعها عند إجراء تغييرات على الملفات هي تأكيد كل عملية استبدال. يتيح هذا النهج إجراء تعديلات دقيقة سطرًا بسطر.
للحصول على إشعار لكل عملية استبدال، أضف c في نهاية الأمر:
:%s/macOS/Linux/gc
استخدام نصوص Bash
في بعض الأحيان، قد تحتاج إلى تنفيذ سلسلة من عمليات البحث والاستبدال عبر ملفات أو أدلة متعددة. في هذه الحالات، يمكن أن يؤدي استخدام نصوص Bash إلى أتمتة المهام التي قد تستغرق وقتًا طويلاً لإتمامها يدويًا.
دعنا نفكر في نص بسيط يستبدل سلسلة قديمة بسلسلة جديدة في ملفات نصية متعددة داخل الدليل الحالي:
#!/bin/bash
for file in *.txt; do
sed -i 's/Windows/Linux/g' "$file"
done
لاستخدام هذا البرنامج النصي، قم أولاً بحفظه في ملف (على سبيل المثال، bashexample.sh)، ثم اجعل الملف قابلاً للتنفيذ عن طريق تشغيل:
chmod +x bashexample.sh
ثم قم بتنفيذ البرنامج النصي باستخدام:
./bashexample.sh
تتكرر حلقة for على جميع ملفات النصوص في الدليل الحالي وتستخدم sed لاستبدال النص داخل كل ملف. يمكنك أيضًا تعديل هذا البرنامج النصي للتعامل مع أنماط أو أنواع ملفات مختلفة حسب الحاجة.
استبدال النص باستخدام البرنامج النصي Python
بفضل إمكانيات معالجة النصوص المتقدمة في Python، يمكنك تنفيذ مهام البحث والاستبدال على الملفات مباشرة من المحطة الطرفية. تكون نصوص Python مفيدة عندما تريد عمليات أكثر تعقيدًا، مثل التعامل مع ملفات متعددة باستخدام المنطق الشرطي.
أولاً، قم بإنشاء ملف Python جديد. يمكنك استخدام أي محرر نصوص، مثل nano أو Vim:
vim textfile.py
بعد ذلك، قم بإضافة البرنامج النصي Python التالي إلى الملف:
#!/usr/bin/env python
import sys
with open(sys.argv[1], 'r+') as f:
content = f.read().replace('Windows', 'Linux')
f.seek(0)
f.write(content)
f.truncate()
بعد حفظ الملف، اجعله قابلاً للتنفيذ عن طريق تشغيل:
chmod +x ./testfile.py
بعد ذلك، قم بتشغيل البرنامج النصي عن طريق تمرير الملف المستهدف كحجة سطر أوامر:
python3 ./testfile.py input.txt
يقوم هذا البرنامج النصي بقراءة محتوى input.txt، واستبدال تكرارات النص القديم بالنص الجديد، وحفظ التغييرات مباشرة في الملف.
استبدال مجموعة من الأحرف باستخدام الأمر tr
هل احتجت يومًا إلى استبدال حرف واحد فقط بحرف آخر في الملف بالكامل؟ إذا كانت الإجابة بنعم، فأنت بحاجة إلى تجربة الأمر tr. هذا الأمر مثالي لاستبدال الأحرف أو حذفها ببساطة.
على سبيل المثال، غالبًا ما أستخدمه لتحويل أحرف معينة في ملف نصي إلى أحرف كبيرة أو صغيرة. لاستبدال جميع الأحرف الصغيرة a وd بأحرف كبيرة a وd في ملف نصي، قم بتشغيل:
tr 'a,d' 'A,D' < example.txt
تذكر أن الأمر tr يعمل على الأحرف وليس السلاسل أو الكلمات، لذا فهو مناسب بشكل أفضل لاستبدال الأحرف البسيطة وليس الأنماط الأكثر تعقيدًا.
يمكنك أيضًا تنظيف المسافات البيضاء أو توحيد نهايات الأسطر من خلال تشغيل هذا:
cat messy_file.txt | tr '\r' '\n' > clean_file.txt
يقوم هذا بتحويل نهايات الأسطر على غرار Windows (\r\n) إلى نهايات أسطر على غرار Unix (\n)، وهو أمر مفيد عند العمل مع الملفات عبر أنظمة تشغيل مختلفة.
استخدام Perl
يمكن أيضًا استخدام Perl، وهي لغة برمجة عالية المستوى، مباشرةً في المحطة الطرفية للبحث عن نص واستبداله، مما يجعلها بديلاً رائعًا لـ sed. يشبه تركيبها النحوي تركيب sed، لكنها تقدم ميزات أكثر تقدمًا.
أنا شخصيًا أحببت Perl حقًا بسبب قدراتها القوية بشكل خاص على التعبيرات العادية، مما يجعلها خيارًا رائعًا لعمليات البحث والاستبدال المعقدة.
يمكنك استبدال أي كلمة في ملف باستخدام هذا الأمر:
perl -pi -e 's/Linux/Windows/g' file.txt
هنا، تخبر العلامات -pi برنامج Perl بتحرير الملف في مكانه، وتسمح لك العلامة -e بتمرير تعبير بشكل مباشر. يعدل هذا الأمر file.txt عن طريق استبدال “Linux” بـ “Windows” في جميع أنحاء الملف.
بالنسبة للاستبدالات البسيطة، تعمل أدوات سطر الأوامر مثل sed أو awk أو perl بشكل جيد. اختر نص Bash أو Python إذا كنت بحاجة إلى إجراء استبدال أكثر تعقيدًا عبر ملفات متعددة أو باستخدام منطق إضافي.
إتقان البحث عن نص واستبداله في محطة طرفية Linux هو مهارة أساسية لأي مستخدم Linux يرغب في تحسين سير العمل وتوفير الوقت. باستخدام الأدوات والأوامر التي تم استعراضها في هذا المقال، يمكن للمستخدمين إجراء التعديلات بسهولة وسرعة على الملفات النصية، سواء كانت صغيرة أو كبيرة. استمتع باستخدام هذه الأوامر البسيطة لتحسين أدائك على النظام.