używam rpl
program w Linuksie do zastąpienia date(
z pdate(
w niektórych plikach.
Ale to mówi A Total of 0 matches replaced in 1 file searched.
while wyjście grep dla date(
jest:
ariyan@ariyan-laptop:/var/www/moodle21$ grep -wR 'date(' admin/uploaduser.php
$today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
używam rpl
jak to:
rpl -wR 'date(' 'pdate(' admin/uploaduser.php
Jaki jest problem?
Odpowiedzi:
Nigdy wcześniej nie korzystałem z tego narzędzia, ale patrząc na opis tego, co „-w”, domyślam się, że obsługuje granice słów nieco inne niż oczekiwano. Jeśli wyłączysz „-w”, powinno działać. Dodatkowo, w przykładzie podałeś jeden plik do dopasowania, więc -R też nie wejdzie do gry.
Próbować:
EDYCJA: Po odrobinie badań odkryłem, że jest zgłoszony błąd dla rpl nie obsługujących interpunkcji jako granic słów, dlatego to nie działa. Więc jedyną opcją jest użycie innego narzędzia. Sed przychodzi na myśl w tym zadaniu, więc możesz to osiągnąć, wykonując następujące czynności:
W ten sposób zamienisz inline (-i) w taki sam sposób, w jaki zrobiłby to rpl i dopasowuje rzeczy z datą początkową i zastępuje je pdate.
źródło
usergetdate(
lubgetdate(
i nie chcę, żeby te zostały zastąpione!sed -i 's/\bdate/pdate/g'