montresol Napisano Marzec 20, 2006 Zgłoszenie Share Napisano Marzec 20, 2006 Hello, musze zamienic w pewnej grupie plikow ciag 'user()' na 'user'. Zamiana w pojedynczym pliku dziala, np.: sed s/"user()"/user/g plik.txt SED generuje wynik na wyjsciu (a chcialbym go zapisac w zrodlowym pliku). Robie wiec przekierowanie: sed s/"user()"/user/g plik.txt > plik.txt.converted Gdy chce to samo zrobic na grupie plikow, nie wiem jak dokonac przekierowania, np.: find . -exec sed -s s/"user()"/user/g {} > {}.converted \; W rezultacie otrzymuje plik '{}.converted' bedacy mergem wszystkich skonwertowanych plikow zrodlowych:) Jak zatem zrobic zeby otrzymac po prostu ten sam zbior plikow tylko ze skonwertowany? Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KozaK Napisano Marzec 20, 2006 Zgłoszenie Share Napisano Marzec 20, 2006 # ls * > lista.txt # awk '{print("sed s/\"user()\"/user/g",$1,">",$1".modified")}' lista.txt > skrypcik # chmod +x skrypcik # ./skrypcik Powinno zadzialac. W ten sposob zmodyfikowane pliki beda mialy dodane rozszerzenie ".modified" ale to mozna zmienic. Pozdrawiam // edit: mozna to zrobic rowniez w taki sposob: # ls * > lista.txt # awk '{print("sed s/\"user()\"/user/g",$1,">",$1".modified")}' lista.txt | bash W ten sposob pomija sie tworzenie pliku "skrypcik", ale polecam mimo wszystko pierwszy sposob, bo przed uruchomieniem "skrypciku" mozna do niego zajrzec i zobaczyc, czy nie zrobilo sie jakiegos bledu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
montresol Napisano Marzec 20, 2006 Autor Zgłoszenie Share Napisano Marzec 20, 2006 Dzieki KozaK, rozwiazanie z AWK dziala wysmienicie. A propos mojego pierwszego posta - dlaczego takie cos nie dziala: sed s/find/replace/g plik.txt > plik.txt To znaczy gdy plik zrodlowy i wynikowy sa tym samym, plik wynikowy (zrodlowy) po wykonaniu polecenia ma wielkosc 0. Korzystam ze pewnej starej ksiazki o Unixach i tam stoi jak byk ze powyzsze powinno dzialac. Pozdrawiam, montresol Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się