awk vs perl

0

Wytłumaczył by mi ktoś różnicę? Kiedy należy stosować perl, kiedy awk, sed i coreutils?
Jestem nowy w bashu, byłbym wdzięczny za pomoc bo mam wrażenie że, jedną rzecz można rozbić na mnóstwo sposobów i zaczynam się w tym gubić.
ps. Nie denerwujcie się na głupie pytanie ;)

4

Każde stosujesz kiedy Ci wygodnie lub kiedy zajdzie taka potrzeba. To jest kwestia indywidualnych preferencji w większości, aczkolwiek niektóre rzeczy jest czasem łatwiej rozwiązać w języku A niż B. I tak, jedną rzecz można zrobić na mnóstwo sposobów.

4

Awk i sed są podobne pod względem działania, sprawdzają się dobrze w momencie kiedy chcemy szybko podmienić kilka wartości w pliku. Np. odczytanie pliku, podmiana przecinków na kropki i zapisanie to linijka tekstu.
Perl z kolei ma trochę więcej instrukcji sterujących. Jeśli chcemy napisać aplikację z bardziej rozbudowaną logiką, to w Perlu jest na to kilka sposobów.
A to, że można zrobić coś na kilka sposobów nie jest ani złe ani dobre. Wybierasz takie narzędzie jakie w tej chwili znasz i jeśli działa, to jest ok. Czasem nie widać wszystkiego od razu, np. wydajności, która dopiero przy plikach po kilkaset MB może być różna dla różnych narzędzi.

0

A po co używać awk w skryptach skoro obydwa zawierają pętle, tablice itd.?

3
szybki_procesor napisał(a):

A po co używać awk w skryptach skoro obydwa zawierają pętle, tablice itd.?

W jakich skryptach? W bashu? Tak się robi, bo ten język ma bardzo ograniczoną liczbę instrukcji odpowiedzialnych za pracę z tekstem. W Perlu? Mogą być kwestie ilości kodu albo wydajności. Ktoś może użyć awk, żeby kod Perla był krótszy albo awk może zrobić coś szybciej. Ta decyzja jednak zależy od skryptu i danych, na jakich operuje skrypt. Czasem też nie wiadomo co autor miał na myśli.
Decyzja o dobrze narzędzia czasem jest trudna i zależy od projektu. Może być tak, że skrypt ma być uruchamiany na serwerze, na którym działa inny ważny program i nie można zakłócać jego pracy. Dlatego trzeba napisać skrypt tak, żeby zabierał jak najmniej zasobów. To decyzje jednak podejmuje się na podstawie tego, jak działa środowisko. W sensie: trzeba popracować w danej firmie kilka miesięcy, żeby wiedzieć co można a czego nie. Dlatego nie ma tak jasnej odpowiedzi.

0

Wiem, iż OPa nie ma już z nami, ale wyrażę swą jednogłośną opinię w temacie.

Zakładając, że mowa o pisaniu czegoś nowego:

AWK jak nie musisz robić nie wiadomo jak zaawansowanych operacji na łańcuchach znaków i chesz być w stanie w miarę szybko wyedytować kod oraz istnieje ryzyko, że ktoś inny do tego kodu zajrzy w miarę niedalekiej przyszłości celem wprowadzenia drobnych zmian na szybko.

Perl jak musisz implementować jakieś arkana magii ceremonialnej przetwarzania znaków i nie ruszać kodu przez wiele lat i jesteś jedyną osobą, która w ogóle zagląda do kodu oraz w wypadku potrzeby zmian w kodzie jesteś w stanie poświęcić kilka weekendów na wprowadzenie się w głęboki trans medytacyjny celem doznania oświecenia w temacie co i gdzie twój kod robi i dlaczego jest to tak dziwnie zaimplementowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1