Evet biliyorum, sed kullanabilirim. Ama bir çeşit hasta olduğumu varsayalım. Bir mazoşist olacaksa ..
Bir dosyam var /tmp/a.script
içeren:
%s_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g
%s_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g
%s_"csv\.php[^"]*\([0-9]\)_"\1.csv_g
%s_"xml\.php[^"]*\([0-9]\)_"\1.xml_g
(Onları vim tarihimden aldım)
Bu komutları bir dosyaya karşı çalıştırmayı çok isterim, example.html
.
Ancak, bu betiğin dosyaya karşı nasıl çalıştırılacağını çözemiyorum.
Farkındayım -c
komut satırı argümanı. Ama sadece tek bir komutu yerine getirir, bütün bu komutları çalıştırmak istiyorum.
Herhangi bir fikir?
Cevap, referans için aşağıdadır, bunu yapmanın hızlı bir yolu olacaktır:
for i in *.html ; do
sed -i'' -e 's_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g' $i
sed -i'' -e 's_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g' $i
sed -i'' -e 's_"csv\.php[^"]*\([0-9]\)_"\1.csv_g' $i
sed -i'' -e 's_"xml\.php[^"]*\([0-9]\)_"\1.xml_g' $i
echo $i
done
Alıntılar, bunu bir süre önce yapma alışkanlığım oldu, ZSH kullanıyorum, daha önce bazı komik davranışlar almış olabilirim. Sed hakkındaki yorumlarınız çok açık, ben de o şekilde yapardım ama daha kolay anlaşılır bir örnek olmasını istedim. Herkes bir yerçekimi ninja değil!
—
Bryan Hunt
sed
örnek 1)-i''
eşittir-i
Bash'in teklifleri işleme şekli nedeniyle; 2) verebilir-e
birden çok kezs///
çoklu aramalardan kaçınmak için noktalı virgüllü komutlar; 3) verebilir*.html
doğrudan sed.