ما هي أفضل أداة للعثور على التعبيرات العادية واستبدالها في ملفات متعددة؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

ويفضل الأدوات المجانية إن أمكن.

وأيضًا، سيكون خيار البحث عن تعبيرات عادية متعددة واستبدال كل منها بسلاسل مختلفة بمثابة مكافأة.

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

المحلول

بيرل.على محمل الجد، فإنه يجعل الأمور أسهل بكثير لمسؤول النظام.هنا مثال:

perl -pi -e 's/something/somethingelse/g' *.log

نصائح أخرى

sed سريع وسهل:

sed -e "s/pattern/result/" <file list>

يمكنك أيضًا الانضمام إليه باستخدام find:

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"

لوحة النص يقوم بعمل جيد على نظام التشغيل Windows.وهو محرر جيد جدًا أيضًا.

لقد كتبت أداة سطر أوامر مجانية لنظام التشغيل Windows للقيام بذلك.تسمى com.rxrepl, وهو يدعم يونيكود والبحث عن الملفات.قد يجدها البعض مفيدة.

ليس من المستغرب أن يقوم Perl بعمل جيد في التعامل مع هذا الأمر، جنبًا إلى جنب مع الصدفة اللائقة:

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done

هذا له نفس التأثير (ولكنه أكثر كفاءة، وبدون شرط السباق) كما يلي:

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done

يحتوي محرر دليل Emacs على وظيفة "dired-do-query-replace-regexp" للبحث عن regexp واستبداله عبر مجموعة من الملفات المميزة.

تحت ويندوز، اعتدت أن أحب WinGrep

ضمن Ubuntu، أستخدم Regexxer.

للبحث والاستبدال في ملفات متعددة على نظام التشغيل Windows وجدت rxFind أن تكون مفيدة للغاية.

بالنسبة لنظام التشغيل Mac OS X، يقوم TextWrangler بهذه المهمة.

مفضلتي الشخصية هي باورغريب بواسطة جي جي سوفت.إنه يتفاعل مع RegexBuddy والتي يمكن أن تساعدك في إنشاء واختبار التعبير العادي، وعمل نسخة احتياطية تلقائيًا لجميع التغييرات (وتوفر إمكانات التراجع)، وتوفر القدرة على تحليل أدلة متعددة (مع أنماط أسماء الملفات)، وحتى دعم تنسيقات الملفات مثل Microsoft Word وExcel و بي دي إف.

PowerGrep Screenshot

سأختار bash + find + sed.

فيم للإنقاذ (والرئيس ;-) ).يحاول:

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(أنا أحب مفتاح Vim's -c، فهو سحري.أو إذا كنت قد قمت بالفعل بفتح الملفات في Vim، على سبيل المثال:

vim <list_of_files>

مجرد قضية:

:bufdo! s:foo:bar:gci

بالطبع sed و perl قادر كذلك.هث.

لدي ترف يونكس وأوبونتو.في كليهما أستخدم البله لأي شيء يتطلب البحث والاستبدال سطرًا بسطر، خاصة بالنسبة للسلسلة (السلاسل) الفرعية سطرًا بسطر.في الآونة الأخيرة ، كان هذا هو الأسرع لمعالجة 1100 تغيير ضد ملايين الخطوط في مئات الملفات (دليل واحد) على Ubuntu أنا من محبي regexxer

 sudo apt-get install regexxer

يوجد في Windows بديل مجاني يعمل بشكل أفضل:المفكرة ++

انتقل إلى "بحث" -> "بحث في الملفات".يمكن للمرء إعطاء الدليل ونمط الملف وتعيين التعبيرات العادية ثم معاينة التطابقات وأخيرًا استبدال جميع الملفات بشكل متكرر.

أنا أحب هذه الأداة:

http://www.abareplace.com/

يمنحك معاينة "أثناء الكتابة" لتعبيرك العادي...رائعة لأولئك الذين ليسوا على دراية جيدة بـ RE ...وهو سريع جدًا في تغيير مئات أو آلاف الملفات في المرة الواحدة...

ثم دعنا نتراجع عن تغييراتك أيضًا...

لطيف جدًا...

باتريك ستيل -http://www.podiotools.com

إذا كانت "لوحة النص" إجابة صحيحة، أود أن أقترح ذلك نص سامية بدون بذل الكثير من الجهد.

تعد تعديلات المؤشرات المتعددة طريقة أكثر فعالية لإجراء عمليات الاستبدال بشكل عام، كما أجدها، ولكن "البحث في الملفات" هو المستوى الأعلى لبدائل البحث العادي/التعبير العادي المجمعة.

jEditيعد البحث والاستبدال في regex في الملفات أمرًا لائقًا جدًا.مبالغة قليلاً إذا كنت تستخدمه لذلك فقط.كما أنه لا يدعم استبدال التعبيرات المتعددة الذي طلبته.

لقد وجدت الأداة آر إكس فيند مفيد (OSS مجاني).

اقواس (الكود المصدري وdeb/Ubuntu وOSx وWindows) يتمتع بتصور جيد للنتائج، مما يسمح بتحديدها بشكل فردي لتطبيق الاستبدال.يمكنك البحث حسب النص القياسي، سواء كان حساسًا لحالة الأحرف أم لا، والتعبير العادي.مهم جدا:يمكنك استبعاد أنماط الملفات والأدلة في البحث.

منذ 25 عامًا على الأقل، كنت أستخدم Emacs لإجراء عمليات استبدال واسعة النطاق عبر أعداد كبيرة من الملفات.يجري etags لتحديد أي مجموعة من الملفات للبحث من خلالها:

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

ثم افتح Emacs وقم بتشغيله tags-query-replace, ، الذي يطالب بالتعبير العادي والاستبدال:

\b\(foo\)\b
\1bar
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top