wrz 15 2008
FreeBSD i greep czyli jak znaleźć coś w pliku
Potęga shella nie podlega dyskusji
Do zabawy wykorzystamy dobrze znanego grepa, który parsuje pliki pod kątem występowania określonego tekstu.
Składnia grepa jest dosyć prosta:
grep "szukany łańcuch" ścieżka
Przykład 1
Szukamy łańcucha „marchewka” we wszystkich plikach tekstowych w naszym homie (/home/slav/*.txt)
$ grep "marchewka" /home/slav/*.txt
Przykład 2 – rekursywnie
$ grep -r "marchewka" /home/slav/*.txt
Przykład 3 – chcemy tylko nazwy plików
Domyślnie grep pokazuje linię w której znalazł trafienie, korzystając z opcji -H może pokazać tylko nazwę pliku, w której znalazł trafienie.
$ grep -H -r “marchewka” /home/slav
Jeżeli jest potrzeba bardziej do przyciąć można to zrobić tak:
$ grep -H marchewka /home/slav/* -R | cut -d: -f1
Istotna informacja dla cuta, po -d wstawiamy znaczek, do którego robimy cięcie. Jeżeli jednak nasze pliki zawierają w nazwie : albo jest nam potrzebny do innych celów można zrobić to wszystko prościej:
$ grep -H "marchewka" /home/slav/* -R -l
Mi sam przykład potrzebny był do skasowania wszystkich maili oznaczonych jako SPAM, więc:
grep -H "X-Spam-Flag: YES" -l -R * >> lista.txt
I teraz kasujemy xargs rm < lista.txt



Ostatnie komentarze