Czy istnieje podstawowy samouczek dotyczący grep, awk i sed? [Zamknięte]

95

Od jakiegoś czasu jestem użytkownikiem Linuksa i całkiem dobrze rozumiem większość popularnych narzędzi wiersza poleceń. Jednak te, które pojawią się i ponownie w odniesieniu do programowania są grep, awki sed.

Jedyną rzeczą, dla której użyłem grep, jest umieszczenie w nim danych w celu znalezienia plików w plikach dziennika, danych wyjściowych psitp., Których nie używałem awklub sedwcale. Czy są jakieś dobre samouczki dotyczące tych narzędzi?

Macha
źródło
2
Betcha! :)
gvkv
Zawsze odkładałem naukę wyrażeń regularnych, ponieważ mówię sobie, że pewnego dnia nauczę się tego, czytając oryginalne prace Kleene na temat logiki, która wymyśliła tę koncepcję, zanim stała się szeroko stosowana w komputerach.
ixtmixilix,
Zgadzam się z gvkv: jeśli chcesz dowiedzieć się te, równie dobrze można dowiedzieć Perl, to co robi grep, sedi awkzrobić (i niemal w taki sam sposób) i wiele więcej na wierzchu.
reinierpost
Zawsze lubię thegeekstuff.com. Skracają bezpośrednio do przykładów, w przeciwieństwie do zwykłej manstrony, która wygląda na 90% przypisów.
izomorfizmy

Odpowiedzi:

19

Książka O'Reilly sed i awk jest idealna dla tych, którzy lubią to.


źródło
11

Napisałem książkę na sed- Definitive Guide to sed - która zawiera samouczek. Obejmuje on w pełni sed, jak również związane z nimi polecenia, takie jak grep, tr, headi tail. Również w pełni obejmuje wyrażenia regularne znacznie lepiej niż gdzie indziej.

Zgadzam się z innymi, że dobre zrozumienie wyrażeń regularnych jest bardzo ważne. Zgadzam się również, że sednajlepiej nadaje się do prostszych zadań, bardziej złożone skrypty szybko stają się niejasne.

Nie zgadzam się, że awkjest przestarzałe, wręcz przeciwnie. Jest jak wiele uniksowych rzeczy (np. vi), Istnieje krzywa uczenia się, ale warto.

Nie zgadzam się z sugestią użycia awkzamiast grep. Z mojego doświadczenia nie ma to sensu. grepjest takie świetne i proste.

Daniel Goldman
źródło
Druga greprzecz - nie możesz wziąć traktora na autostradę, jeśli możesz pomóc. I to też całkiem niezła książka - dziękuję.
mikeserv
3

Książka kucharska wyrażeń regularnych opublikowana przez O'Rielly wystarczy, aby zabrać Cię w dowolne miejsce, w którym się z nich korzysta.

ixtmixilix
źródło
3

Autorami książki są Kernigan, a Pike tytuł przypomina „The Unix Programming Environment”.

Książka, z której faktycznie się nauczyłam, nosiła tytuł „An Introduction to Berkely Unix”.

HandyGandy
źródło
2

Jeśli chcesz nauczyć się jednego z tych 3 (grep, sed i awk), możesz po prostu nauczyć się awk / gawk. . awk może wykonywać funkcje grep i sed, tj. używać wyrażeń regularnych do wyszukiwania / zamiany tekstu, a także wiele więcej, ponieważ jest to również język programowania. Jeśli poznasz wewnętrzne funkcje gawk / awk, nie będziesz musiał używać grep / sed / wc / cut itp. Wystarczy jedno narzędzie.

użytkownik1606
źródło
och, btw, nawet nie potrzebujemy awk, możesz po prostu użyć g++ -x c++ - -o /tmp/prog && /tmp/progi wpisać swoje polecenia. Jedno narzędzie do rządzenia nimi wszystkimi! :-)
Lie Ryan,
1
kto potrzebuje kompilatora, kiedy można po prostu zapisać plik binarny bezpośrednio do pliku? kot zrobi lub ed, jeśli czujesz się leniwy.
cas
1

Moim zdaniem awk jest mniej lub bardziej przestarzałe (jednak inni zdecydowanie będą się z nim sprzeczać), większość osób, które znam obecnie, zamiast tego używa jakiegoś języka skryptowego, takiego jak Perl, lub dziś często python do zaawansowanej manipulacji tekstem. sed jest świetny do prostszych zadań związanych z operowaniem tekstem, używam go cały czas. Nauczyłem się tego głównie, patrząc na sed one-liners, takie jak te na http://sed.sourceforge.net/sed1line.txt . Odnośnie grep: Cóż, zasadniczo chcesz dobrze zrozumieć wyrażenia regularne (potrzebne również dla sed). Właśnie użyłem instrukcji texinfo.

fschmitt
źródło
10
awk jest nadal bardzo przydatny do manipulowania danymi przesyłanymi z innych poleceń. W przypadku prostego korzystania z wiersza poleceń nie uważałbym jeszcze, że to jest przestarzałe.
MaQleod,
Powinien być także dostępny na wielu systemach ze względu na POSIX.
echox
1
Większość „zaawansowanych AWK” jest prawdopodobnie lepiej wykonywana przy użyciu Perla, Pythona lub cokolwiek innego, ale proste rzeczy są przyjemne z po prostu awk.
user455,
1
Awk nadal jest przydatny, aby zrozumieć różne odpowiedzi, które można znaleźć w Internecie, próbując rozwiązać problem. Często znajdziesz w Internecie przykłady, które używają instrukcji awk, takich jak awk '{print $3}'.
Steven D
1
W pracy i w domu używam awk częściej niż sed. Nic nie przebije awk przy ustalonych danych tabelarycznych, takich jak dane dpkg -lwyjściowe. Nie zrobiłbym w tym nic skomplikowanego, ale brakowało mi narzędzia bez awk. Nie mogę powiedzieć tego samego o bardziej ogólnych językach programowania, o ile lubię niektóre z nich.
JM Becker,