Przejdź do głównej zawartości

Edycja wielku plików pod linux z danym ciągiem znaków

Jeśli musisz w jednym pliku zastąpić wszystkie wystąpienia danego ciągu znaków, to z pomocą przychodzą już porządne edytory tekstu, które pozwalają bez problemu na taką operację. Co jednak jeśli posiadasz wiele plików (powiedzmy 100), do tego rozmieszczonych w różnych podkatalogach, gdzie musisz zastąpić wszystkie wystąpienia danego ciągu znaków, bo np. popełniłeś ten sam błąd, o którym sprawę zdałeś sobie dopiero teraz?

Pomocny w takim momencie będzie BASH, Grep oraz jakiś język skryptowy (np. perl)... no to do dzieła:

$ grep -rl STARY_STRING . | xargs perl -pi~ -e 's/STARY_STRING/NOWY_STRING/'


grepem najpierw wyszukujemy rekurencyjnie (w podkatalogach) wszystkich plików, w których występuje dany ciąg znaków (wtedy linijka w perlu ma mniej do roboty), następnie podanym kodem zamieniamy wszystkie wystąpienia na nowy ciąg znaków, np:

$ grep -rl '%22' . | xargs perl -pi~ -e 's/'%22'/''/'


Jeśli chcesz przekopiować podany wyżej kod, to usuń znak zachęty "$" dolara.

Komentarze

Popularne posty z tego bloga

WordPress -> SQL Injection poprzez plugin Webdorado SpiderCalendar

W zeszłym roku sprawdziłem jakość kodu oraz poprawność przetwarzania danych wejściowych przez plugin „Form Maker” przygotowany przez wydawcę Webdorado. Tym razem postanowiłem sprawdzić czy autor poprawił jakoś kodu swoich produktów. Należy tutaj nadmienić, że poza wersjami darmowymi opartymi na licencji GNU/GPLv2 oferuje on również wersję płatne z dodatkowymi szablonami. Tym razem postaram się opisać wszelkie przeszkody, które musiałem pokonać aby n apisać działającego exploita. Zacząłem zabawę tak, że program był dla mnie black-boxem, ale niestety skończyło się na przejrzeniu kodu. Zapraszam do lektury. Poniżej można zobaczyć jeden z widoków częściowych kalendarza, który domyślnie jest wywoływany z JavaScriptu jako XHR, można jednak go z powodzeniem otworzyć w przeglądarce jako widok główny: http://localhost:8888/wp/wp-admin/admin-ajax.php?action=spiderbigcalendar_month&theme_id=13&calendar=1&select=month,list,week,day,&date=2015-02&many_sp_calend...

Całkowanie numeryczne

Wprowadzenie Całkowanie numeryczne można porównać do podziału powierzchni całkowanej funkcji na przedziały (im dokładniejszy wynik chcemy uzyskać, tym więcej przedziałów). W zależności od wybranej metody całkowania będziemy liczyć pole w przedziałach dla prostokąta, trapezu lub paraboli. Do wyboru pozostaje nam również wybór czy ewentualny będziemy całkować pole figury pod całkowaną funkcją (z niedomiarem - wtedy uzyskany wynik może być mniejszy niż oczekiwany) lub nad funkcją (z nadmiarem - wtedy oczekiwany wynik może być większy niż oczekiwany). Pod koniec działania programu musimy zsumować pola wszystkich figur z pod przedziałów, które policzyliśmy tak, by uzyskać wynik. Graficzne przedstawienie problemu Całkowanie tak prostej funkcji jakmetodą prostokątów może dać duży błąd. Parametry wielkości przedziałów (ich liczność w całkowanym przedziale) należy dobrać odpowiednio tak, by błąd był jak najmniejszy. Całkowanie funkcji w przedziale od 0 do 8 z podziałem na 4 pod przedziały...

Inkscape - Opisywanie tekstu na ścieżce

Chcąc stworzyć np. efektowny logotyp w formacie SVG w kształcie koła warto wiedzieć jak opisywać napisy na ścieżkach, gdyż może nam to być przydatne, a dobrze wykonane opisanie napisu na kole może być całkiem efektowne. Przyda się również eksport tekstu do ścieżki celem poprawnego wyświetlania napisu w formacie SVG, tak więc do dzieła. Pierwszym krokiem będzie stworzenie krzywej (czynimy to przy użyciu odpowiedniego narzędzia - jeśli nie wiesz o czym mowa - przeczytaj poprzednie rozdziały), oraz jakiegokolwiek napisu, który będziemy chcieli edytować. Narzędzie do opisywania tekstu na ścieżkach domyślnie działa w ten sposób, że rozpoczyna opisywanie tekstu od strony lewej ścieżki, która będzie będzie służyła do opisania. Całość należy dobrać proporcjonalnie tak, żeby tekst opisał się na całej ścieżce - no chyba, że chcemy inaczej. Kolejnym etapem naszej pracy będzie zaznaczenie całości projektu (tj. napisu oraz ścieżki) oraz wybranie menu Tekst -> Wstaw na ścieżkę . Na tym etapie pra...