Sed استبدل Newline بمسافة

Sed Astbdl Newline Bmsaft



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

في هذا الدليل ، سنعرض استبدال الأسطر الجديدة بمساحة باستخدام 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. على الرغم من أن ذلك يأتي على حساب بعض الأداء ، إلا أن المرونة وسهولة الاستخدام تستحقان العناء. تعلم المزيد عن باش البرمجة النصية للمبتدئين .