Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

9 طرق لتحرير النص باستخدام الأمر sed على Linux

الأمر sed في أنظمة Linux يعد من الأدوات القوية التي يستخدمها مسؤولو الأنظمة والمطورون لتحرير النصوص بسرعة ومرونة. سواء كنت تريد استبدال كلمات داخل ملف، حذف أسطر معينة، أو تعديل النصوص بشكل جماعي، فإن sed يوفر اختصارات فعالة تجعل التعامل مع الملفات النصية أكثر سهولة. التعرف على كيفية استخدام هذا الأمر بشكل صحيح يساعدك على إنجاز مهام معقدة بأبسط الأوامر. في هذا المقال نستعرض أهم الطرق العملية لاستخدام sed مع أمثلة توضيحية لتطبيقها مباشرة.

linux-laptop-with-a-terminal-open أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

يُعد sed، محرر التدفق، أحد الأدوات المفضلة لتحرير النصوص في لينكس. إنه محرر نصوص بدون واجهة، يُجري العمليات بسلاسة وهدوء، مباشرةً من سطر الأوامر. من الحلول السريعة إلى تحويلات النصوص المتقدمة، إليك تسع طرق يُسهّل بها الأمر sed التحرير.

1. البحث عن نص واستبداله (الأساسي والمُوجّه)

يُعد استبدال النص الاستخدام الأكثر شيوعًا لـ sed. أستخدمه غالبًا عند العمل على ملفات كبيرة في نافذة طرفية، لأنني لا أرغب في فتح محرر نصوص منفصل للبحث عن النص واستبداله فقط. تشغيل sed مباشرةً من نافذة الطرفية لا يزيد من كفاءتي وسرعتي فحسب، بل يمنحني أيضًا خيارات تخصيص أكثر من مربع حوار البحث والاستبدال العادي.

البنية الأساسية للبحث عن النص واستبداله بسيطة.

sed 's/old/new/' file.txt

finding-and-replacing-content-using-sed-command أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

هنا، يعني الأمر s استبدال، وold هو النص الذي تبحث عنه (مثل Flameshot في حالتي)، وnew هو النص الذي تريد استبداله به (مثل Gradia).

افتراضيًا، يستبدل الأمر sed أول ظهور فقط في كل سطر. مع ذلك، في كثير من الحالات، ستحتاج إلى تبديل جميع ظهورات الكلمة المستهدفة. للقيام بذلك، أضف العلامة العامة g في النهاية:

sed 's/old/new/g' file.txt

الآن، سيتم استبدال كل تكرار في كل سطر.

يمكنك أيضًا استبدال نص في سطر محدد بتحديد رقم السطر قبل خيار s:

sed '10s/old/new/' file.txt

يستبدل هذا الأمر النص القديم بنص جديد في السطر العاشر فقط. وبالمثل، يمكنك استبدال النص ضمن نطاق من الأسطر بتحديد رقمي السطرين، مفصولين بفاصلة، قبل علامة s:

sed '10,20s/old/new/' file.txt

بالإضافة إلى عمليات الاستبدال الخاصة بالأسطر، يمكنك أن تكون أكثر انتقائية من خلال إخبار sed بالتصرف فقط إذا كان الخط يتطابق مع نمط معين:

sed '/ERROR/s/old/new/g' file.txt

finding-and-replacing-only-specifc-line-based-on-pattern أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

بهذه الطريقة، يستبدل الأمر sed النص فقط في الأسطر التي تُطابق النمط (مثل الخطأ في هذه الحالة) مع ترك الباقي دون تغيير.

2. إدراج وإضافة وإزالة المحتوى

أثناء العمل مع الملفات، غالبًا ما أقوم بثلاث مهام: إدراج وإضافة وإزالة المحتوى. باستخدام الأمر sed، يُمكنني التعامل مع هذه المهام الثلاث بسلاسة وكفاءة دون الحاجة لفتح الملف في مُحرّر.

اقرأ أيضا:  أفضل ألعاب مريحة لتجربة ممتعة على نظام Linux

لنبدأ بالإدراج. باستخدام الأمر sed، يُمكنك إضافة محتوى في أي مكان في الملف – قبل أو بعد سطر مُحدد. على سبيل المثال، إذا كنت تعمل مع أي ملف تكوين وتريد إضافة إعداد جديد قبل السطر الثالث، يُمكنك القيام بذلك باستخدام علامة i:

sed '3i\
# New setting\
ENABLE_FEATURE=true' config.conf

inserting-content-into-configuration-file-using-sed-command أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

وبالمثل، إذا كنت تريد أن يظهر النص بعد السطر 10، فقط قم بتبديل i بـ a:

sed '3a\
Added text' file.txt

أسهل طريقة للتذكر هي اعتبار “i” بمثابة “إدراج” قبل و”a” بمثابة “إلحاق” بعد.

أحيانًا، يكون من الأسهل استبدال سطر كامل بدلًا من تعديل أجزاء منه. لذلك، استخدم الخيار c. على سبيل المثال، إذا كان لديك ملف خصائص برقم إصدار وتريد تحديثه، يمكنك استبدال السطر بأكمله:

sed '/^version=/c\version=2.0.0' config.conf

يقوم هذا الأمر بحذف السطر القديم وكتابة السطر الجديد مكانه.

replacing-specific-line-using-sed-command أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux

إذا كنت تريد إزالة سطر بالكامل دون إضافة أي شيء جديد، استخدم الخيار d:

sed '3d' file.txt

يؤدي هذا إلى إزالة السطر 3. علاوة على ذلك، يمكنك أيضًا قص كتلة من الأسطر عن طريق تحديد نطاق مثل هذا:

sed '5,10d' file.txt

هذا يُزيل الأسطر من 5 إلى 10.

كما ذكرنا سابقًا، عندما استخدمنا مطابقة الأنماط للبحث عن المحتوى واستبداله، يُمكننا أيضًا استخدام sed للحذف بناءً على الأنماط. على سبيل المثال، إذا كان ملف السجل يحتوي على آلاف مُدخلات DEBUG، يُمكنك حذفها جميعًا دفعةً واحدة:

sed '/DEBUG/d' logfile.txt

قد تبدو هذه الأوامر مُرهِبة للوهلة الأولى، ولكن بمجرد البدء في استخدامها، ستتمكن من إجراء هذه العمليات الأساسية بسرعة ببضع ضغطات مفاتيح فقط.

3. عرض المحتوى واستخراجه

يطبع الأمر sed افتراضيًا كل سطر يُعالجه، مما قد يكون مُرهِقًا، خاصةً مع السجلات أو ملفات التكوين. للتحكم في ذلك، نستخدم الخيار -n، الذي يُلزم الأمر sed بالبقاء صامتًا ما لم نطلب منه صراحةً إظهار شيء ما. يُتيح لنا إقران هذا الخيار مع الأمر p (للطباعة) التحكم الكامل فيما يظهر.

على سبيل المثال، لطباعة السطر الخامس من ملف مُحدد، استخدم:

sed -n '5p' file.txt
printing-only-the-specific-line-of-the-text-file أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux
يمكنك أيضًا تحديد نطاقات أسطر محددة. على سبيل المثال، لطباعة الأسطر من 15 إلى 20، قم بتشغيل:
sed -n '15,20p' file.txt

وبالمثل، إذا كنت تبحث عن كلمة أو نمط معين، مثل الأخطاء المدفونة في آلاف الأسطر، فاستخدم هذا:

sed -n '/ERROR/p' file.txt

هنا، يبحث الأمر sed عن أي سطر يحتوي على كلمة ERROR ويطبع تلك الأسطر فقط. يشبه الأمر تشغيل grep، ولكن مباشرةً داخل الأمر sed، وهو أمر مفيد عند ربط عمليات متعددة.

وهناك استخدام فعال آخر وهو استخراج أجزاء من النص بين علامتين. تخيل أنك تصحح أخطاء سجل النظام وتريد فقط القسم بين START وEND:

sed -n '/START/,/END/p' file.txt

يعمل هذا الأمر كأداة تمييز ذكية، إذ يستخرج كل ما بين الكلمات المفتاحية. لعكس التطابق، استخدم ببساطة خيار ! كما يلي:

sed -n '/ERROR/!p' logfile.txt

يؤدي هذا إلى طباعة جميع الأسطر باستثناء تلك التي تحتوي على خطأ، مما يتيح لك التركيز على النتيجة النهائية وتجاهل التشويش.

4. تعديل الملفات في مكانها باستخدام خيارات النسخ الاحتياطي

كل ما يفعله الأمر sed آمن: فهو يطبع النتائج فقط على الطرفية، مع ترك ملفاتك الأصلية سليمة. مع ذلك، قد ترغب في إجراء تغييرات دائمة في النهاية. باستخدام الخيار -i، يمكنك تعديل الملف في مكانه:

sed -i 's/old/new/g' file.txt

هذا يستبدل كل نسخة قديمة بنسخة جديدة مباشرةً في ملفك النصي. لا إعادة توجيه، لا ملفات إضافية، مجرد تحديث فوري. لكن إليك المشكلة: هذا يستبدل الملف فورًا، دون زر تراجع.

اقرأ أيضا:  أفضل 3 تطبيقات Linux مجانية تمنحك تجربة مختلفة

لإنشاء نسخة احتياطية من الملف الأصلي، استخدم -i مع لاحقة النسخ الاحتياطي:

sed -i.bak 's/old/new/g' file.txt

الآن، يُنشئ sed نسخة من الملف الأصلي كملف file.txt.bak قبل إجراء أي تعديلات. في حال حدوث أي خطأ، يمكنك التراجع عنه بسرعة. كما يمكنك اختيار لاحقات مخصصة:

sed -i.backup 's/temporary/permanent/g' file.txt
sed -i.$(date +%Y%m%d) 's/foo/bar/g' config.conf

يُنشئ الأمر الأول ملف file.txt.backup، بينما يُنشئ الأمر الثاني نسخة احتياطية مُؤرخة، وهي حيلة أستخدمها عند تكرار عمليات التكوين، مما يسمح لي بتتبع الإصدار وتاريخه.

5. تطبيق عدة تغييرات دفعة واحدة

أحيانًا، لا يكفي تعديل واحد. قد تُنظّف مجموعة بيانات، أو تُوحّد التصنيفات، أو تُعدّل ملف تكوين حيث يلزم إجراء عدة تغييرات. تشغيل الأمر sed عدة مرات يُجدي نفعًا، ولكنه غير فعّال. بدلًا من ذلك، يُمكنك تجميع التعديلات معًا، بحيث يُفحص الملف مرة واحدة فقط.

على سبيل المثال، لإجراء استبدالين في تمريرة واحدة، استخدم عدة علامات e:

sed -i -e 's/apple/orange/g' -e 's/pear/grape/g' file.txt

هنا، يصبح لون التفاحة برتقاليًا، والكمثرى عنبًا. للحصول على نمط أكثر إحكامًا، يمكنك تجميع الأوامر في سلسلة نصية واحدة، مفصولة بفاصلة منقوطة:

sed 's/red/blue/g; s/apple/orange/g; /draft/d' data.txt

يستبدل هذا الإصدار الألوان، ويبدّل أسماء الفواكه، ويحذف أي سطر يحتوي على مسودة. يعمل بنفس الطريقة، ولكن مع تراكم التعديلات، تتراجع سهولة القراءة. وهنا يأتي دور نقل الأوامر إلى ملف نصي مخصص.

6. أتمتة التعديلات باستخدام النصوص

إذا كانت لديك مهام تنظيف متكررة، على سبيل المثال، مشروع يحتوي على مئات الملفات التي تحتوي على أخطاء تنسيق بسيطة مثل رموز إضافية، أو مصطلحات غير متناسقة، أو تعليقات عشوائية، فحينها يجب عليك الأتمتة. بدلًا من لصق الأسطر في جهازك الطرفي، احفظ تعديلاتك في ملف نصي وطبّقها على أي نص تحتاجه.

على سبيل المثال، أنشئ ملف edits.sed بهذه الأسطر:

s/apple/orange/g
s/pear/grape/g
/^#/d

الآن يمكنك تشغيل كل شيء مرة واحدة باستخدام:

sed -i -f edits.sed file.txt

باستخدام أمر واحد، يُطبّق الأمر sed جميع تعديلاتك على الملف المُحدّد دفعةً واحدة. مع ذلك، ستحتاج إلى قضاء بعض الوقت في إنشاء قواعد edits.sed للملفات التي تُريد تعديلها.

7. تحرير النص باستخدام التعبيرات النمطية (Regex)

تصف التعبيرات النمطية (Regex) الأنماط بدلاً من النص الحرفي. هذا يعني أنه يُمكنك استهداف أشكال البيانات، مثل كلمة متبوعة برقم أو أي نص في نهاية السطر، بدلاً من الكلمات الدقيقة فقط. للوهلة الأولى، قد تبدو التعبيرات النمطية مُرهِبة، ولكن بمجرد تعلّم بعض الأساسيات، ستشعر وكأنك تمتلك سكينًا سويسريًا مُتطوّرًا للتعامل مع النصوص.

التعبيرات النمطية ليست مُجرّد أدوات لتنقية النصوص، بل تُساعدك أيضًا على تحديد الأنماط وتشكيل طريقة عملك مع البيانات. من بين الرموز الرئيسية:

^ و$ يُطابقان النص في بداية السطر أو نهايته.

اقرأ أيضا:  دليل شامل لتثبيت تطبيقات Windows على Linux باستخدام PlayOnLinux

الأقواس المُربعة مثل [0-9] تُطابق أي رقم، و[aeiouAEIOU] تُساعدك على إيجاد أو حذف حروف العلة.

النقطة . يُشير إلى أي حرف مفرد.
* و + يسمحان لك بتكرار الأنماط عدة مرات حسب حاجتك.
قد تكون التعابير النمطية معقدة بعض الشيء، ولكن حتى تعلم بعض الأساسيات يفتح آفاقًا واسعة مع أدوات مثل sed.

خذ هذا الأمر، الذي يُقلب الأسماء الأولى والأخيرة:

sed -E 's/^([A-Za-z]+)[[:space:]]+([A-Za-z]+)$/\2, \1/' names.txt

إذا كان ملفك يبدو بهذا الشكل:

John Doe
Jane Smith

ثم سيكون الناتج مثل هذا:

Doe, John
Smith, Jane

يحل Regex أيضًا مشكلات الاتساق، مثل ملء الأرقام الفردية بصفر أو إزالة المسافات الزائدة من السجلات وملفات CSV:

sed -E 's/\b([0-9])\b/0\1/g' numbers.txt #add a leading zero
sed -E 's/[[:space:]]+$//' file.txt #removing trailing spaces

8. تنظيف وتنسيق ملفات النصوص

تظهر الملفات غير المرتبة باستمرار، خاصةً عندما تكون صادرة من Windows أو Excel أو من عمليات التصدير المُولّدة تلقائيًا. يُنظّف sed هذه البيانات بسرعة، مما يُتيح لك قراءتها أو مشاركتها أو إدخالها في البرامج النصية بسهولة أكبر.

مثال شائع على ذلك نهايات أسطر Windows. إذا فتحت ملف Windows على Linux ورأيت أحرف ^M شاذة، فهذا هو إرجاع السطر \r. يمكنك إزالة إرجاع السطر الزائد في نهاية كل سطر كما يلي:

sed -i 's/\r$//' file.txt

علامات التبويب مصدر إزعاج شائع آخر. لتوحيد كل شيء إلى مسافات، يمكنك استخدام ما يلي:

sed -E 's/\t/ /g' file.txt

بالإضافة إلى ذلك، تتسلل المسافات البيضاء إلى كل مكان – الأسطر الفارغة، أو المسافات الخلفية، أو التباعد غير المتسق بين الكلمات. يتعامل sed مع الأمر بسهولة باستخدام هذه الأوامر:

sed -E '/^[[:space:]]*$/d' file.txt
sed -E 's/[[:space:]]+$//' file.txt
sed -E 's/[[:space:]]+/ /g' file.txt

هنا، يقوم الأمر الأول بتنظيف الأسطر الفارغة، بينما يزيل الأمر الثاني المسافات الفارغة عند الحواف، ويضغط الأمر الأخير عدة مسافات في مسافات واحدة للحصول على نص أنيق وموحد.

9. الدمج مع أوامر أخرى

من الأمور التي تعجبني في sed قدرته على العمل بسلاسة مع أوامر Bash الأخرى. فهو يقصّ المخرجات، ويستخرج المعلومات، ويقارن الملفات المعالجة، ويوسع نطاق التحرير عبر العديد من الملفات – كل ذلك باستخدام سطر واحد سريع أو داخل نصوص أكبر.

على سبيل المثال، عادةً ما يطبع ps aux أكثر مما تريد. لكن ربطه بـ sed يُبقي الأسطر الخمسة الأولى فقط:

ps aux | sed -n '1,5p'
using-sed-with-ps-aux-command-to-get-limited-output أفضل الطرق لاستخدام الأمر sed لتحرير النصوص على Linux
يمكنك أيضًا دمج grep مع sed لاستخراج معلومات محددة. على سبيل المثال، إذا كان لديك سجل مليء برسائل الخطأ مع طوابع زمنية بين قوسين مربعين، فاستخدم هذا لاستخراج الطوابع الزمنية فقط:
grep 'ERROR' logfile | sed -E 's/.*\[([0-9-: ]+)\].*/\1/p'

هذه مجرد أمثلة قليلة. يمكنك دمج sed مع diff وfind وxargs وغيرها الكثير. فهو يُعيد تشكيل سلاسل النصوص المعقدة، مما يُحسّن أداء الأمر التالي.

من عمليات البحث والاستبدال البسيطة إلى التحويلات المعقدة المدعومة بالتعابير العادية، يُقدم sed حلولاً تُوفر ساعات لا تُحصى من العمل اليدوي. ومع ذلك، وكما هو الحال مع أي أمر في لينكس، فإن مفتاح إتقانه هو الممارسة اليومية. استخدمه بكثرة، وسرعان ما سيصبح سهلاً عليك.

استخدام الأمر sed على Linux يمنحك قوة كبيرة في التعامل مع النصوص والملفات بشكل أسرع وأكثر كفاءة. بدلًا من الاعتماد على التحرير اليدوي أو الأدوات الرسومية، يمكنك تنفيذ تعديلات معقدة بخط واحد من الأوامر. كلما تعمقت أكثر في أمثلة sed ستكتشف مرونته وقدرته على توفير الوقت والجهد، مما يجعله أداة لا غنى عنها لأي مستخدم أو مطور يعمل مع Linux.

زر الذهاب إلى الأعلى