هشام رزق الله نشر 12 سبتمبر 2015 أرسل تقرير نشر 12 سبتمبر 2015 قمتُ بكتابة أمر باستخدام Sed لحذف جميع التعليقات في ملف ما:sed -i /^#/d /path/to/fileلكن المشكلة عندما يكون هنالك فراغ أمام `#` فإنه لا يتم حذف التعليقات:#this is a good comment ---- works #this is an indented comment ---- doesn't workلاحظ أنه لا يعمل على التعليق الثاني، فكيف أُغير هذا الأمر حتى أتمكن من حذف جميع التعليقات ؟ اقتباس
1 TheProgrammer نشر 12 سبتمبر 2015 أرسل تقرير نشر 12 سبتمبر 2015 (معدل) يمكنك إضافة `[ \t]*` والتي تعني تحديد جميع المسافات في بداية السطر إلى الأمر ليصبح الأمر كالتالي:sed -e '/^[ \t]*#/d'وهذا الأمر سيحدد جميع الأسطر التي تبدأ من 0 أو أكثر مسافة أو tab ثم تليها رمز # وسيقوم الأمر sed بحذف هذه الأسطر.وهنالك عدة أوامر أخرى تقوم بنفس الوظيفة، مثل الأمر التالي:sed '/^[[:blank:]]*#/d' file.txtأو الأمر التالي:sed -e '/^[[:space:]]*/d'كما يمكنك استخدام grep بدلا من sed ليصبح الأمر كالتالي:grep -v '^[[:blank:]]*#' file.txtالمصدر تم التعديل في 12 سبتمبر 2015 بواسطة TheProgrammer اقتباس
السؤال
هشام رزق الله
قمتُ بكتابة أمر باستخدام Sed لحذف جميع التعليقات في ملف ما:
لكن المشكلة عندما يكون هنالك فراغ أمام `#` فإنه لا يتم حذف التعليقات:
لاحظ أنه لا يعمل على التعليق الثاني، فكيف أُغير هذا الأمر حتى أتمكن من حذف جميع التعليقات ؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.