ما هي أداة سطر أوامر GNU/Linux التي سأستخدمها لإجراء بحث واستبدال في ملف؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ما هي أداة سطر أوامر GNU/Linux التي سأستخدمها لإجراء بحث واستبدال في ملف؟

هل يمكن تحديد نص البحث والاستبدال بتنسيق regex؟

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

المحلول

sed 's/a.*b/xyz/g;' old_file > new_file

جنو سيد (الذي ربما يكون لديك) أكثر تنوعًا:

sed -r --in-place 's/a(.*)b/x\1y/g;' your_file

وفيما يلي شرح موجز لهذه الخيارات:

-i[SUFFIX], --in-place[=SUFFIX]تحرير الملفات في مكانها (عمل نسخة احتياطية في حالة توفير الامتداد)

-r، --regexp-extatedاستخدام التعبيرات العادية الموسعة في البرنامج النصي.

ال فري بي إس دي يدعم الإصدار أيضًا هذه الخيارات.ال نت بي إس دي و أوبن بي إس دي دعم الإصدارات فقط -r.

إذا كنت تريد معرفة المزيد عن sed، كوري وقد اقترح هذا البرنامج التعليمي.

نصائح أخرى

اخترع

وبيرل لذلك:

perl -pi -e 's/foo/bar/g;' *.txt

وأي عادي الصورة /// نمط في تلك علامات الاقتباس المفردة. يمكنك الاحتفاظ بنسخة احتياطية مع شيء من هذا القبيل:

perl -pi.bak -e 's/foo/bar/g;' *.txt

وأو خط أنابيب:

cat file.txt | perl -ne 's/foo/bar/g;' | less

ولكن هذا العمل في الحقيقة أكثر الحوار الاقتصادي الاستراتيجي.

والنظر روبي كبديل للبيرل. ومن سرق معظم وسائط سطر الأوامر أونيلينير بيرل (-i، -p، -l، -e، -n) والسيارات مجموعات $_ لك مثل بيرل يفعل ويمتلك الكثير من الخير التعابير المنطقية. بالإضافة إلى ذلك جملة روبي قد تكون أكثر راحة وأسهل في القراءة أو الكتابة من على بيرل أو لااا. (أم لا، اعتمادا على ذوقك).

وruby -pi.bak -e '$_.gsub!(/foo|bar/){|x| x.upcase}' *.txt

ومقابل.

وperl -pi.bak -e 's/(foo|bar)/\U\1/g' *.txt

في كثير من الحالات عند التعامل مع المتشددين واحد، والأداء ليس كافيا من قضية لرعاية ما إذا كنت تستخدم خفيفة الوزن بيرل سد أو الوزن الثقيل أو heaveier الوزن روبي. استخدام كل ما هو أسهل في الكتابة.

ااا أو محرر تيار، ونعم، ويستخدم التعابير المنطقية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top