سؤال حذف كافة الخطوط في Notepad ++ باستثناء الخطوط التي تحتوي على كلمة أحتاجها؟


لدي ملف نصي وأريد الاحتفاظ بالخطوط التي تبدأ بها <Path>، وحذف جميع الخطوط الأخرى.

كيف يمكنني فعل ذلك؟


176
2018-05-29 15:05


الأصل


ذات صلة: stackoverflow.com/questions/8264391/... - Cees Timmerman
البرنامج المساعد LineFilter2 هو أيضا سهل الاستخدام. - Karsten


الأجوبة:


هناك طريقة سهلة لتحقيق ذلك. تحتاج إلى تنفيذ 3 خطوات.

  1. اذهب إلى قائمة البحث> بحث ...> اختر "علامة". تفعيل التعبيرات العادية. البحث عن ^<Path> (^ هو لخط البداية). لا تنسَ التحقق من "خطوط الإشارة المرجعية" ثم اضغط على "وضع علامة الكل"

    ==> جميع الصفوف التي تريد الاحتفاظ بها تحتوي على إشارة مرجعية

  2. انتقل إلى القائمة "بحث - Bookmark - Bookmark Bookmark"

    ==> كل خط تريد حذفه مرجعية.

  3. انتقل إلى القائمة "بحث - إشارة مرجعية - إزالة خطوط إشارة مرجعية"

    ==> يتم حذف جميع خطوط إشارة مرجعية.


257
2018-06-03 20:23



+1. جميل، لم أعلم بهذا هناك أيضًا خيارات لـ "إزالة الخطوط غير المميزة" أو "قص / نسخ الخطوط المميزة" التي يمكن أن توفر بعض الوقت. - deizel
لقد واجهت مشاكل في البداية لأن إصداري (6.2.3) من Notepad ++ لا يحتوي على عنصر القائمة المسمى "علامة التبويب". بدلاً من ذلك ، عليك الانتقال إلى "بحث" -> "بحث ..." -> انقر فوق علامة التبويب "علامة". وأنت لم تعد بحاجة إلى عكس الإشارات المرجعية. Notepad ++ الآن يحتوي على "إزالة خطوط Unmarked". لكن نصيحتك ساعدتني كثيرًا! شكر! - Adam
يمكنك تخطي الخطوة 2 ، لأنه (على الأقل منذ v6.4.5) ممكن لاختيار "إزالة خطوط غير مميزة". - Nailuj
أنا أستخدم Notepad ++ لفترة طويلة ولم أعرف ما هي "الإشارات المرجعية" من قبل. من المدهش مدى قوة تلك الأداة ومدى معرفتي بها. - Danubian Sailor
أنت ويني. هذا مثال آخر مروع لكيفية التعرف على الأداة التي تستخدمها بشكل حقيقي. - Marcello Grechi Lins


يمكن القيام بذلك بالفعل في خطوتين بدءًا من 6.3. أعتقد أنه يمكن أن يتم ذلك في وقت أبكر من ذلك حيث أنني حصلت على 5.9 عندما جربتها لأول مرة.

استخدام وظيفة stema كقاعدة لهذه الإجابة. هناك خطوة واحدة أقل الآن. ضع علامة على الخطوط وأزل الخطوط غير المميزة. فعله. يتبع تعليمات مفصلة.

  1. قائمة البحث "بحث". في مربع الحوار "بحث" ، انقر على علامة التبويب "علامة". تفعيل التعبيرات العادية. البحث عن ^ (^ لخط البداية). لا تنسَ التحقق من "خطوط الإشارة المرجعية" ثم اضغط على "وضع علامة الكل"

    ==> جميع الصفوف التي تريد الاحتفاظ بها تحتوي على إشارة مرجعية

  2. قائمة البحث -> إشارة مرجعية -> إزالة خطوط غير مميزة.

    ==> الكل عدم يتم حذف الخطوط المرجعية.


57
2018-02-27 16:03



استغرق هذا 10 ثوانٍ بينما أخذني الحل الآخر 20 ثانية. شكرا! - Black


تنظيف regex الحل الوحيد

البديل الثاني

  1. استبدال regex

    (?!^.*test.*$)^.+
    

    استبدل الاختبار بالنص المطلوب

  2. يحل محل

    [\r\n]{2,}
    

    مع \r\n

البديل خطوة واحدة

استعمال ^(?!<Path>).*\r\n لاستبدال التطابقات بالسلسلة الفارغة. سيكون إصدار معمم ^(?!.*?test).*\r\n. لن يؤدي ذلك إلى إزالة السطر الفارغ في نهاية الملف. تتم إزالة جميع الأسطر الأخرى ، بما في ذلك عدة أسطر فارغة متتالية.

تفسير:

  1. (?!) هو نظرة سلبية. ^.*test.*$  يحدد السطر بأكمله الذي يحتوي على النص المطلوب.

  2. [\r\n]{2,} يطابق أي \r\n الذي يحدث أكثر من مرة واحدة هذا هو خط جديد ويندوز. إذا كان لديك نظام لينكس أو نظام تشغيل آخر ، فقد تحتاج إلى الفوضى مع هذا. والثاني هو استبداله بخط واحد للعودة.


25
2017-07-08 16:51



ملاحظة إلى الشعوب: أحيانًا لا يعمل التعبير المعتاد مع نهاية السطر (EOL). ال \r\n EOL المذكور في المشاركة هو ما يستخدمه Windows ، وبالتالي قد يكون أو لا يكون ما تبحث عنه. في كثير من الأحيان على بيئات لينكس انها مجرد \nأو في بيئات Mac فقط \r، لذلك إذا قمت بسحب ملف من أي منهما ، فلن يكون نمط Windows EOL. ومع ذلك ، إذا قمت بالتنزيل عبر مشغلات وضع FileZilla و ASCII ، فقد يتم تغييرها مرة أخرى إلى Windows EOL (مثل \n إلى \r\n). لذلك إذا لم يعمل regex ، تحقق من نمط موسوعة الحياة بالانتقال إلى "عرض> إظهار الرموز> إظهار نهاية الخط". CR = \r. LF = \n. - dhaupin


يبدو لي أن أسهل طريقة هي استخدام ميزة "البحث عن الكل في المستند الحالي" ثم نسخ النتائج إلى ملف جديد أو تحديد الكل واستبدالها في الملف الحالي.

هذا من شأنه العثور على جميع الخطوط التي تحتوي على النص الخاص بك وقائمة بها في القاع. فقط انقر بزر الماوس الأيمن على نتيجة البحث ونسخ / لصق.


5
2017-12-17 11:43



يجب عليك إزالة أرقام الأسطر عن طريق استبدالها \tLine [\d]*: . لا تزال إجابة رائعة. - Noumenon


اذهب الى القائمة بحث -> تجد... -> تفعيل التعابير العادية. ابحث عن "^مسار"(^ للخط البداية).

انقر فوق الزر "البحث عن الكل في المستند الحالي".

ستظهر نافذة "Find result" مع جميع الأسطر في النموذج. حدد نسخ / لصقها إلى علامة تبويب جديدة في Notepad ++.

في علامة التبويب الجديدة هذه ، انتقل إلى: القائمة بحث -> يحل محل... -> تفعيل التعابير العادية.

في الحقل "البحث عن:" ، استخدم النمط: "Line \ d +:". اترك حقل "استبدال بـ:" فارغًا.

انقر على زر "استبدال الكل".


4
2018-06-21 16:36





توفير أنك تريد بالفعل المباراة <Path> وليس مسار نظام الملفات ، يمكنك أن تجرب هذا من سطر الأوامر باستخدام بيرل:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

عملت مع Strawberry Perl على Windows ، لذا قم بالتعديل وفقًا لذلك إذا لم تكن النتائج متوقعة.


3
2018-05-30 01:02





إنه أخرق ، ولكن قم بنسخه كله تفوقثم استخدمه =IF(LEFT(A1,6)="<Path>",A1,"") ونسخ تلك الصيغة على طول الطريق. ثم نسخ ذلك مرة أخرى إلى المفكرة ++. إنها ليست مثالية ، ولكنها سهلة (إذا كان لديك برنامج Excel). تحذير: لن يعمل بشكل جيد مع الخطوط المسننة (سيقوم Excel بتحويل الأعمدة ، إلخ.).


3
2018-05-29 18:07



عندما يكون هناك عدد من الطرق للتعامل مع هذه المهمة بشكل مباشر ، فلماذا تريد نسخها بشكل تدميري إلى تطبيق آخر ، ومعالجتها هناك ، ونقلها مرة أخرى؟ - Baldrickk