Skocz do zawartości

Sed I Zamiana Ciagu Znakow W Grupie Plikow


montresol

Rekomendowane odpowiedzi

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

# 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

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

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ę
×
×
  • Dodaj nową pozycję...