Nowe posty

Autor Wątek: AWK / Bash  (Przeczytany 4797 razy)

kubatur0

  • Gość
AWK / Bash
« dnia: 2010-05-07, 09:22:23 »
Witam, mam pewien problem, chcialbym napisac srypt ktory przeglada wszystkie pliki z folderu "Changes" , wyswietla ich zawartosc linijka po linijce i zapisuje te cala zawartosc w pliku "lista" nie wiem jak to zrobic, probowalem while ("ls -l"); do awk '{ getline }' ale nie dzialalo... poza tym nie wiem jak konkretnie odwolac sie do tego Folderu "Changes" i zeby na samym koncu zapisywalo wszystko co odczytalo do jednego pliku.
Aha i jeszcze zapomnialem o jednym... w jaki sposob zapisac petle if ktora ma mowic czy zawartosc katalogu jest pusta czy nie ?
 Bede wdzieczny za pomoc

  • Gość
AWK / Bash
« Odpowiedź #1 dnia: 2010-05-07, 09:42:57 »
ja proponuje

cd katalog
albo cat * > plik
albo for i in * do; cat $i >> plik; done;

kubatur0

  • Gość
AWK / Bash
« Odpowiedź #2 dnia: 2010-05-07, 09:44:42 »
a na przyklad grep -w 'Changes' ?

eetthhoo

  • Gość
AWK / Bash
« Odpowiedź #3 dnia: 2010-05-07, 09:57:57 »
Nie wiem czy dobrze zrozumialem, ale jesli masz 4 wersje basha to wystarczy konstrukcja :

 ls **|xargs cat>lista

ls ** -listuje rekurencyjnie wsztstkie katalogi
| - przekierowanie potoku
xargs - pobiera kolejne argumenty i przekazuje po kolei do danego polecenia
cat - czyta to co mu przekazal xargs

U mnie to dziala, pracuje na opensuse 11.2

kubatur0

  • Gość
AWK / Bash
« Odpowiedź #4 dnia: 2010-05-07, 10:07:14 »
no dobra ale jak zrobic zeby zmaiast 'lista'  czytalo wszystkie pliki z katalogu ?

eetthhoo

  • Gość
AWK / Bash
« Odpowiedź #5 dnia: 2010-05-07, 10:21:17 »
z katalogu bez podkatalogow zrobisz to tak:

cat *.txt albo dowolne inne rozszerzenie, gwiazdka wystepuje tu jako wyrazenie regularne, oczywiscie wczesniej przenies sie do tego katalogu komenda cd, albo dopisz bezwzgledna sciezke do polecenia cat. Napisz dokladnie co chcesz uzyskac, bo w zasadzie wyglada na to, ze nie znasz podstawowych komend:)

kubatur0

  • Gość
AWK / Bash
« Odpowiedź #6 dnia: 2010-05-09, 00:35:22 »
wiem ze nie umiem moze zbyt duzo ale ucze sie poprzez praktyke, a dzieki wam jest mi latwiej :)

mialbym jeszcze pytanie... wyszukalem sobie linie grep $index mainlist
i teraz chcialbym ja usunac (tak zeby nie zostala przerwa). Czy ktos ma jakis pomysl jak to zrobic ? ;)

arctgx

  • Gość
AWK / Bash
« Odpowiedź #7 dnia: 2010-05-09, 02:00:38 »
Zerknij do man grep na temat parametru, który wyświetla linie nie pasujące do wzorca. Powinno Ci wystarczyć to, jeśli wynik chcesz dostać na standardowym wyjściu.

kubatur0

  • Gość
AWK / Bash
« Odpowiedź #8 dnia: 2010-05-09, 15:43:30 »
Dzieki wielkie za pomoc, jak do tej pory wszystko dziala jak powinno :)

Jezeli jeszcze mnie nie znienawidziliscie to mialbym jeszcze pytanie :P
Ogolnie moj skrypt sklada sie z petli if ktora tworze takie jakby menu. Teraz chcialbym zrobic takie menu, ktore nie konczy sie po zakonczeniu kazdego polecenia. Tylko np po wcisnieciu 1 i zrobieniu co ma zrobic zeby wracalo do glownego menu.

Poza tym w mojej pracy musze chyba wykorzystac w jakis sposb forka bo zamysl programu jest taki zeby dzialal rownolegle dla kilku uzytkownikow. Czyli server jest uruchamiany raz a klientow przybywa :)

Zakladam ze jest jakas banalna funkcja ktorej ja nie znam ktora pozwala odpalic server jako deamon ?  ;>