Skocz do zawartości

[bash] Find + Awk


MitS

Rekomendowane odpowiedzi

Witam,

 

mam oto taki problem.

Jest sobie plik z jakimś długim tekstem. Taki plik jest w każdym folderze użytkownika i zawiera podobne dane. Mój problem polega na tym że chciałbym odnaleźć każdy z tych plików a następnie wyciąć zadany zakres znaków z każdej linii.

 

próbowałem coś takiego:

#find /home -type f -name .touch_config.txt | awk 'substr($1, 5, 2)'

 

ale nie działa :/

zapewne coś źle zrobiłem dlatego też prosiłbym o pomoc.

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

hmm a czy jakbys dal -exec awk 'substr($1, 5, 2)' {} >>out \; to zadzialaloby? wyciac w sensie zapisac do pliku czy wyciac w sensie usunac? jesli usunac to mozna by seda uzyc

Odnośnik do komentarza
Udostępnij na innych stronach

niezadziałałoby...

 

chodzi o usunięcie.

 

Próbowałem sedem ale tu to już w ogóle nic mi nie przychodzi do głowy (jak w awk miałem substr to kombinowałem).

Bo chodzi o to by od razu po odnalezieniu usunął z każdego wiersza w pliku np. 4 znaki począwszy od 6 znaku.

 

niestety nie mam pomysłu na to :/

Odnośnik do komentarza
Udostępnij na innych stronach

żeby było szybciej przeszukuj dokładnie ten poziom , "domki" mogą być obszerne, a user mógł zrobić linka ze swojego pliku (więc -xtype) np.:

find /home -mindepth 2 -maxdepth 2 -xtype f -name .bashrc

 

"usunął z każdego wiersza w pliku np. 4 znaki począwszy od 6 znaku."

 find /home -mindepth 2 -maxdepth 2 -xtype f -name .touch_config.txt \
     -exec sed -e 's/\(^.....\)..../\1/g' '{}' -i \;

ozn.

\(^.....\) blok 5 dowolnych znaków od początku wiersza

.... blok 4 dowolnych znaków

 

\1 pierwszy blok bez zmian przechodzi

brak informacji o drugim usuwa go

 

-i wykonuje wszystko bezpośrednio na pliku

 

generalnie to sed jest strasznie zakręcony

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ę...