Autor: Piotr Piatkowski (kompas_at_ceti.com.pl)
Data: Sat 19 Aug 2000 - 15:15:56 MET DST
In pl.comp.os.linux.programowanie andy_k <andyk_at_spamprotector_cyberspace.org> wrote:
> $ find -name '*.html' |xargs perl -pi -e 's/<script
> src=../../../../popup.js></script>/ /g'
> find: path-list predicate-list
No dobrze, mój find tak działa ale standardowo należy jako pierwszy
argument podać ścieżkę od której zaczynamy wyszukiwanie plików (np. ".").
> Bareword found where operator expected at -e line 1, near "/../popup"
> (Missing operator before popup?)
> syntax error at -e line 1, near "/../popup"
> Search pattern not terminated at -e line 1.
A bo to się tak trudno domyśleć że skoro / jest tu separatorem to nie może
występować w stringu? Proponuję użyć innych znaków dla operatora s///,
takich które nie pojawiają się w stringu, np. { }:
find . -name '*.html' |xargs perl -pi -e 's{\Q<script src= ... \E}{ }g'
Tekst między \Q i \E jest brany "dosłownie", bez zważania na występujące
tam znaki, dzięki temu kropki będą traktowane jako kropki - standardowo w
wyrażeniu reguralny kropka oznacza dowolny znak.
> A tak btw, jak zamienic w wielu plikach rozszerzenie z htm na html?
for i in `find public_html -name '*.htm'`; do mv $i ${i}l; done
-- Piotr Piątkowski, Kraków perl -le 's**02).4&9%4^[./4(%2^0%2,^([#+%2&**y%& -;^[%"`-{ a%%s%%$_%ee'
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 20:29:47 MET DST