البحث عن & استبدال النص في مستندات متعددة من سطر الأوامر
إذا كنت راضيًا عن سطر الأوامر وكنت دائمًا في موقف تحتاج فيه إلى البحث عن كلمة أو عبارة أو عنوان URL أو حرف واستبداله عبر مجموعة من المستندات النصية المتعددة ، فإن perl يؤدي المهمة بشكل جيد. ستنفذ سلسلة أوامر بسيطة بسرعة كبيرة عملية بحث عن مجموعة جماعية واستبدالها على النص ، سواء في مستند واحد أو ممتد على مجموعة من المستندات المتعددة.
مثل العديد من الأشياء في سطر الأوامر ، لا توجد عملية تأكيد ، لذلك سترغب في التأكد من ضبط بناء الجملة بشكل صحيح قبل بدء الأمر ، وإلا فقد تحتاج إلى إجراء عملية بحث واستبدال أخرى لإصلاح الخطأ المطبعي.
بناء جملة الأمر الأساسي كما يلي:perl -pi -w -e 's / THIS / THAT / g؛' /path/to/files.txt
للحصول علىمثال من كلمة واحدة، إذا كنت بحاجة إلى استبدال جميع مثيلات "ogre" بـ "cornbread" في كل ملف .txt داخل مجلد "المستندات" ، يمكنك استخدام الأمر التالي:
perl -pi -w -e 's / ogre / cornbread / g؛' ~ / Documents / . txt
للحصول علىمثال لإيجاد واستبدال عبارة كاملة، لنفترض أننا سنستبدل الجملة بأكملها "The Chocolate Factory "مع" The Wizard of Oz "في مجموعة من ملفات .txt تبدأ بـ" Films "المخزنة في دليل المستندات:
perl -pi -w -e 's / The Chocolate Factory / The Wizard of Oz / g؛' ~ / Documents / Films.txt
يتم البحث والاستبدال على الفور. يمكنك التحقق مرة أخرى من التغيير باستخدام cat و grep للتحقق من:
cat ~ / Documents / Films124.txt | grep Wizard of Oz "
باعتراف الجميع ، هذا متقدم إلى حد ما ، ونعم ، يمكن إجراء البحث عن الدُفعات واستبدالها من خلال مستندات متعددة بطريقة أكثر سهولة في الاستخدام من خلال تطبيقات واجهة المستخدم الرسومية مثل TextWrangler و BBEdit ، ولكن في بعض الأحيان يكون سطر الأوامر أسرع لمهام سريعة مثل هذه وغيرها من المهام المماثلة ، بالإضافة إلى أنها لا تتطلب أي تنزيلات إضافية لاستخدامها.
إبهام كبير لـ Lifehacker للخدعة الممتازة.
Update : يعد الأمر "sed" طريقة أخرى لإجراء البحث والاستبدال السريع من خلال سطر الأوامر. يُعد تغطية sed في الغالب موضوعًا لمقال آخر ، لكن الصيغة الأساسية لاستخدام sed لهذه المهمة أبسط قليلاً وبالتالي يسهل تذكرها:
sed -i 's / THIS / THAT / g' /path/to/files.txt
لا توجد طريقة صحيحة أو خاطئة ، لذا فإن استخدامك perl أو sed يصبح مسألة تفضيل شخصي.