Opowieści skrypty

Można oczywiście skorzystać z programu shareware, który wykona te czynności za nieporównywalnie mniejsze pieniądze, niemniej nadal wymaga to kupowania programu i jego instalacji. Tymczasem w systemach takich jak Linux wystarczy wykorzystać polecenie find, które znajdzie wszystkie żądane pliki i wykona na każdym z nich oddzielnie wybrane przez nas polecenie (np. convert - bardzo dobry darmowy program do wsadowej modyfikacji plików, pochodzi z pakietu ImageMagick). Całe polecenie jest popularnym w świecie programistów "jednolinijkowcem". Jest dostępny za darmo i działa dobrze - czego chcieć więcej?

Komunikacja z protezą

Nowoczesne aplikacje biznesowe komunikują się ze sobą za pomocą wbudowanych interfejsów, wciąż często zdarzają się przypadki, gdy do wymiany danych trzeba posłużyć się plikami tekstowymi. Przyczyn może być wiele. Jedną z nich może być konstrukcja jednego z systemów, uniemożliwiająca wspólną z innym systemem pracę na jednej bazie.

Niejednokrotnie zdarzają się programy całkowicie ze sobą niekompatybilne, gdzie nie można dobudować żadnego interfejsu pomiędzy nimi, np. między starszym systemem z dedykowaną bazą plikową a nowoczesnym oprogramowaniem decyzyjnym pracującym z bazą danych Oracle 9i. Istnieją także specjalizowane programy, w których dostępny jest tylko eksport do pliku tekstowego i nie wolno niczego modyfikować z innych powodów.

Pliki tekstowe są najbardziej uniwersalną formą wymiany danych, o ile ich format zostanie dokładnie określony. Plik tekstowy jest dość łatwy do analizowania, ponadto sam eksport jest bezproblemowy. Rzecz w tym, że czasami trzeba dokonać konwersji między formatami tekstowymi różnych programów. Dla kogoś, kto nie ma doświadczenia w pisaniu skryptów oraz obycia z narzędziami do obróbki plików tekstowych, jest to zadanie bardzo trudne - skrypty są tu jednak niezastąpione.

Bywa, że do tego celu używa się Excela (import plików tekstowych, obróbka w kolumnach, potem seria poleceń "znajdź i zastąp", operacje na wierszach i kolumnach, a potem zapis w innym formacie), następnie plik wynikowy jest pracowicie poprawiany ręcznie w programie Word Pad. Gdy Excel nie pomaga, bardziej doświadczeni użytkownicy Windows zaprzęgają do pracy program Access, importując do niego dane ze skoroszytów Excela, wykonując na nich kwerendy po to, by móc potem wyeksportować wynik do pliku tekstowego, który w końcu zostanie poprawiony.

To samo zadanie mógłby z powodzeniem wykonać skrypt korzystający z potężnych w swojej prostocie narzędzi takich jak grep, awk, sed, cut czy wykonany przy pomocy interpretowanego języka programowania perl albo python.

Skrypt napisany przez doświadczonego administratora - zwykle takiego z korzeniami zawodowymi w systemach Unix - potrafi zdziałać prawdziwe cuda. Po kilku próbach powstaje skrypt, który pobierze dane w jednym formacie, przerobi je w locie na inny i zapisze w nowym pliku. Wystarczy dodać do niego funkcje automatyzacji i mamy gotowy interfejs łączący dwa dowolne programy, może nieco prymitywny, ale działający, łatwy do kontroli.

Gdzie program nie może

O tym, jak skrypty mogą być użyteczne, można przekonać się, będąc skazanym na "aplikacje obowiązkowe". Ostatnio szczególnie dokuczliwym programem tego typu był przygotowany przez Główny Urząd Statystyczny program Z-12.

Aplikacja posiada opcje importowania bazy w formacie DBF, niemniej wymaga ona bardzo dokładnego przygotowania, poza tym nie każde oprogramowanie komunikuje się z DBF-em przygotowanym dla programu FoxPro. Na szczęście jest opcja importu pliku tekstowego, a dokumentacja jego formatu jest zapisana w pliku pomocy. Przygotowywanie pliku tekstowego za pomocą Excela jest pracochłonne i nadaje się wyłącznie do ręcznego, jednorazowego importu danych gotowych, przygotowanych w innym narzędziu.

Firmy wielooddziałowe lub posiadające dane w kilku systemach zostały zmuszone do kilkakrotnego importu i scalania danych. Administratorzy korzystający z programu, który nie potrafi od razu przygotować stosownego pliku tekstowego dla Z-12, są skazani na przygotowanie automatu importowego albo ręczne przeróbki plików tekstowych stworzonych za pomocą Excela. Do tego celu właśnie przydają się skrypty - całą operację daje się wykonać za pomocą kilkuwierszowego skryptu wykorzystującego programy grep, sed i awk.

Siła tych z pozoru prostych narzędzi polega także na tym, że wynik jednego z nich można potokowo obrabiać za pomocą drugiego. Przetwarzanie potokowe (pipelining) jest możliwe także w skryptach powłoki systemu Windows, niemniej w systemach Unix jest znacznie lepsze i bardziej elastyczne. Niektóre zadania są wręcz stworzone do realizacji za pomocą narzędzi skryptowych połączonych w potok. Gdy z dużego pliku trzeba wybrać wiersze zawierające konkretne znaki, a potem dzieląc na kolumny (o różnej szerokości) wybrać konkretne wartości, podsumować je i zliczyć według warunków, a potem jeszcze zapisać wynik w formacje CSV.

Zastosowanie Accessa i Excela w powyższym przypadku zajmie bardzo dużo czasu. Ponadto nierzadko plik i tak trzeba poprawiać ręcznie. Tymczasem właściwe użycie programów grep, awk i sed daje szybko dobry rezultat. Poza tym dzięki zapisaniu skryptu jest on powtarzalny dla różnych danych o tej samej strukturze wejściowej.


TOP 200