قم بإزالة جميع الأسطر من الملف بدءًا من "{" إلى "}" باستخدام sed

StackOverflow https://stackoverflow.com//questions/10649516

  •  11-12-2019
  •  | 
  •  

سؤال

لدي ملف محتوياته كالتالي :

control_data {
some data dadadadf 
some data fsfsfs
some more data
.
.
.
}
more data below 
{
.
.
}

أريد حذف البيانات من "control_data" إلى "}" الأولى

لقد حاولت الأمر

sed "s/control_data\([^}]*\)}//g"

ولكن هذا لا يعمل إلا إذا لم يكن لدينا خطوط متعددة على سبيل المثال.يعمل هذا الأمر عندما يكون لدينا بيانات مثل:

control_data {some data dadadadf some data fsfsfs some more data...}more data

يعطي :

more data {....} 

كيف نجعل هذا الأمر يعمل عندما يكون لدينا بيانات عبر خطوط متعددة؟أنا جديد في مجال البرمجة النصية، بعض الشرح مع الإجابة سوف يقطع شوطا طويلا في المساعدة.

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

قد لا يكون هذا واحد مثاليا ولكن هذا يستخدم SED (رمز SED الخاص بك) giveacodicetagpre.

المنطق: أقول جميع الخطوط الجديدة إلى: ثم باستخدام رمز SUD الخاص بك ثم تحويل الكل: إلى Newline ملاحظة: افتراضي هو: لن تكون موجودة في الملف في أي مكان.

نصائح أخرى

بلدي sed-fu هو ضعيف، ولكن هذا ما حصلت عليه (باستخدام هذه الإجابة كدليل): giveacodicetagpre.

إليك انهيار الأمر giveacodicetagpre.

هذا قد عمل لك:

sed '/^control_data {.*}$/d;/^control_data {/,/^}$/d' file
  • يقوم الأمر الأول بإزالة جميع الأسطر المفردة /^control_data {.*}$/d
  • الأمر الثاني يزيل كافة الكتل /^control_data {/,/^}$/d
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top