Wyobraź sobie, że masz kilkugigabajtowy plik wejściowy subor.txt, w którym chcesz wypisać pierwsze 4 linie. W wyniku domyślnego czytania przez sed całych plików uzyskujemy bardzo słabą wydajność skryptu:
$ sed -n '1.4p' plik.txt
Zamiast tego powinniśmy zatrzymać program sed natychmiast po przeczytaniu pierwszych dwóch linii. Prezentuję rozwiązania zarówno dla sed , jak i awk:
$ sed '4q' subor.txt
$ awk 'NR==5{exit;}1' subor.txt
UNIX SHELL to język skryptowy. Jest to jednak język interpretowany, więc preferuj wbudowane polecenia. Polecenia wewnętrzne (np. echo) to polecenia, które SHELL wykonuje bez tworzenia wątku, natomiast wykonanie poleceń zewnętrznych (np. expr) tworzy obsługę SHELL.
Powłoka UNIX świetnie współpracuje z plikami. Nie ma jednak potrzeby nadużywania tego poprzez niepotrzebne stopniowe przypisywanie danych do dużego pliku. Np. cykl
podczas gdy [warunek]
wykonaj
echo x >> subor.txt
gotowe
można zastąpić
podczas gdy [warunek]
wykonaj
echo x
gotowe > subor.txt
co pozwala zaoszczędzić znaczną ilość pieniędzy. Zamiast wykonywania instrukcji n razy, zostanie ona wykonana tylko raz na końcu pętli while.
Oznacza to, że wszelkie instrukcje, które mogą wyjść poza pętlę, nie zostaną użyte w żadnym miejscu pętli. Wyobraź sobie, że sprawdzasz datę. Datę należy obliczyć wcześniej w trakcie działania skryptu i nie należy jej obliczać w trakcie działania skryptu.
Marián Knězek