في هذا الدليل ، سنعرض استبدال الأسطر الجديدة بمساحة باستخدام sed.
استخدام sed لاستبدال النص
أولاً ، دعنا نلقي نظرة سريعة على إجراء البحث الأساسي والاستبدال باستخدام sed. سيتم استخدام نفس الطريقة عند استبدال الأسطر الجديدة بمسافات مع بعض الخيارات الإضافية. هيكل القيادة هو كما يلي:
$ sed -e 's ///'
ألق نظرة على الأمر التالي:
صدى دولار 'الثعلب البني السريع' | sed -e 's / quick / fast / g'
يقوم الأمر echo بطباعة السلسلة إلى STDOUT . ثم تيار STDOUT الأنابيب إلى sed. لقد أصدرنا تعليمات لـ sed لاستبدال أي مثيل سريع يتم استبداله بسرعة. أخيرًا ، تتم طباعة الإخراج على الشاشة.
استبدال Newlines بمسافة
للتوضيح ، لقد أنشأت الملف النصي التالي test.txt مع العديد من المحتويات الوهمية:
$ cat test.txt
يقبل الأمر sed التعبيرات النمطية لوصف الأنماط المختلفة. بالاستفادة من هذه الميزة ، سنصف السطر الجديد على أنه \ n. دعونا نحاول استبدال الأسطر الجديدة بمسافة بيضاء:
$ sed -e 's / \ n / / g' test.txt
ومع ذلك ، لم يعمل ذلك بالشكل المتوقع. لتحقيق هذا الهدف ، نحتاج إلى بعض الخيارات الإضافية. ألق نظرة على الأمر التالي:
$ sed -e ': a؛ N؛ $! ba؛ s / \ n / / g' test.txt
يحتوي الأمر sed على أقسام متعددة ؛ كل منها يشير إلى مهمة محددة:
- : أ: إنشاء تسمية 'أ'
- N: لإلحاق السطر التالي بمساحة النمط
- $! ba: إذا لم يكن السطر الأخير ، فارجع إلى التصنيف 'أ'
- s / \ n / / g: البحث عن السطر الجديد واستبداله (\ n) بمسافة (/ /). النمط مطابق عالميًا (/ g)
يتكرر الأمر sed خلال الخطوات حتى يصل إلى السطر الأخير ، ويستبدل جميع \ n الأحرف بمسافة.
بدلاً من هذا الأمر المعقد ، يمكننا تبسيط الأشياء باستخدام العلامة -z التي تحدد sed للعمل مع السجلات المفصولة بالقيم الفارغة. سيبدو الأمر كما يلي:
$ sed -z -e 's / \ n / / g' test.txt
طرق بديلة
بينما يمكن لـ sed القيام بالمهمة على ما يرام ، إلا أن هناك بعض الأدوات البديلة. في هذا القسم ، سوف نفحص اثنين منهم بإيجاز.
في المثال التالي ، يمكننا استخدام الأمر tr لاستبدال newline بمسافة بيضاء بطريقة بسيطة:
$ tr '\ n' 'يمكننا أيضًا استخدام perl للقيام بهذه المهمة. الصيغة التالية مشابهة أيضًا لما استخدمناه مع sed (لكن مبسط):
$ perl -p -e 's / \ n / /' test.txt
هناك طريقة أخرى لاستبدال الأسطر الجديدة بمسافة بيضاء وهي استخدام أمر اللصق. لاحظ أنه يمكن إزالة حرف واحد فقط:
لصق $ -s -d '' test.txt
على غرار sed ، يأتي Linux مع أداة أخرى awk. على غرار sed ، يمكنه أيضًا إجراء بعض الاستبدالات المتقدمة على الإدخال. لغرضنا ، استخدم الأمر awk التالي:
$ awk 1 ORS = 'test.txt
استنتاج
استكشف هذا الدليل كيف يمكننا استبدال السطر الجديد بالمساحة باستخدام sed. تم تحقيقه بطريقتين مختلفتين. يتضمن هذا الدليل أيضًا أدوات أخرى ذات صلة يمكننا استخدامها لاستبدال السطر الجديد بمسافة بيضاء.
بدلاً من استخدام أوامر معقدة يصعب حفظها ، نستخدم البرمجة النصية Bash لأداء العديد من الأشياء في Linux. على الرغم من أن ذلك يأتي على حساب بعض الأداء ، إلا أن المرونة وسهولة الاستخدام تستحقان العناء. تعلم المزيد عن باش البرمجة النصية للمبتدئين .