• 0

كيف أجعل sed يحذف جميع التعليقات في ملف ؟

قمتُ بكتابة أمر باستخدام Sed لحذف جميع التعليقات في ملف ما:

sed -i /^#/d /path/to/file

لكن المشكلة عندما يكون هنالك فراغ أمام `#` فإنه لا يتم حذف التعليقات:

#this is a good comment           ---- works
    #this is an indented comment  ---- doesn't work

لاحظ أنه لا يعمل على التعليق الثاني، فكيف أُغير هذا الأمر حتى أتمكن من حذف جميع التعليقات ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

يمكنك إضافة `[ \t]*` والتي تعني تحديد جميع المسافات في بداية السطر إلى الأمر ليصبح الأمر كالتالي:

sed -e '/^[ \t]*#/d'

وهذا الأمر سيحدد جميع الأسطر التي تبدأ من 0 أو أكثر مسافة أو tab ثم تليها رمز # وسيقوم الأمر sed بحذف هذه الأسطر.

وهنالك عدة أوامر أخرى تقوم بنفس الوظيفة، مثل الأمر التالي:

sed '/^[[:blank:]]*#/d' file.txt

أو الأمر التالي:

sed -e '/^[[:space:]]*/d'

كما يمكنك استخدام grep بدلا من sed ليصبح الأمر كالتالي:

grep -v '^[[:blank:]]*#' file.txt

المصدر

تمّ تعديل بواسطة TheProgrammer

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن