اذهب إلى المحتوى

السؤال

نشر

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

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

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

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

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

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...