Praca z tekstem w bash (narzedzia)

Bash jest niezłym narzędziem jeżeli chodzi o manipulację tekstem (oczywiście nie może się umywać do Perla/Seda/AWKa/Pythona), ale sporo funkcji ma zaimplementowanych jako dodatkowe narzędzia, niestety wiele osób nawet sobie nie zdaje z tego sprawy, dlatego czasami piszą narzędzia w innych językach, które realizują już zaimplementowane funkcje.

Wypisywanie całości plików

Polecenie Działanie polecenia
cat łączenie i wypisywanie plików - zobacz useless cat award
tac łączenie i wypisywanie odwróconych plików
nl numerowanie linii i wypisywanie plików
seq wypisywanie numerycznych sekwencji
od wypisywanie plików w formacie ósemkowym i innych

Wypisywanie części plików

Polecenie Działanie polecenia
head wypisywanie początku plików
tail wypisywanie końcówki plików
split podział pliku na części stałej wielkości
csplit podział pliku na części zależne od kontekstu
join łączenie linii w pliku po pojedynczym polu
paste łączenie linii w plikach (linia nr 1 z pliku B zostaje doklejona do lini 1 z pliku A)
rev zamiana kolejności linii - te z końca pliku są na górze, te z góry na końcu pliku
tee przekierowanie strumienia wejściowego na wiele strumieni wyjściowych

Formatowanie zawartości plików

Polecenie Działanie polecenia
fmt reformatowanie akapitów tekstu
pr stronicowanie i kolumnowanie plików do wydruku
fold zawijanie linii wejściowych do zadanej szerokości

Sortowanie i działania na plikach posortowanych

Polecenie Działanie polecenia
sort sortowanie plików tekstowych
uniq pozostawianie unikalnych linii w pliku
comm porównywanie dwóch posortowanych plików liniami
ptx tworzenie indeksu permutacyjnego zawartości pliku
tsort sortowanie topologiczne

Działania na polach wewnątrz linii

Polecenie Działanie polecenia
cut wypisywanie wybranych części linii
paste zlepianie linii plików
join łączenie linii według wspólnego pola

Działania na pojedynczych znakach

Polecenie Działanie polecenia
tr zamiana, ściskanie, usuwanie znaków
expand zamiana tabulacji na spacje
unexpand zamiana spacji na tabulacje

Statystyki plików

Polecenie Działanie polecenia
wc wypisywanie liczby bajtów, słów i linii
sum wypisywanie sumy kontrolnej i liczby bloków
csum / cksum wypisywanie sumy CRC liczby bloków
md5sum wypisywanie sumy md5 lub sprawdzanie skrótu danych
sha1sum wypisywanie sumy sha1 lub sprawdzanie skrótu danych
sha256sum wypisywanie sumy sha256 lub sprawdzanie skrótu danych
file Określenie typu pliku

Działania na nazwach plików i katalogach

Polecenie Działanie polecenia
basename pozostawia tylko nazwę pliku (nawet ucina rozszerzenie jeżeli trzeba ;))
dirname pozostawia tylko pełną ścieżkę do pliku (bez nazwy)
fuser pozwala zidentyfikować i zabić proces który uzyskuje dostęp do pliku

Inne przydatne narzędzia

Polecenie Działanie polecenia
echo wyświetla argument na ekranie
cal wyświetla kalendarz
date wyświetla obecną datę i czas
read odczytuje linię ze standardowego wejścia
let realizuje działanie arytmetyczne
test pozwala na sprawdzanie różnych wartości ; polecenie [ jest aliasem dla tego polecenia

Narzedzia bardziej zaawansowane

Polecenie Działanie polecenia
awk

narzędzie pozwalające na wyszukiwania oraz edycję plików

  • Oficjalna dokumentacja <https://www.gnu.org/software/gawk/manual/gawk.html>`__
  • Practical Guide <https://devarea.com/understanding-awk-practical-guide/>`__
grep narzędzie pozwalające wyszukiwać słów oraz ich części w plikach tekstowych
sed edytor strumieniowy - radzi sobie z naprawdę ogromnymi plikami

Podsumowanie

Przed przystąpieniem do pisania jakiegoś programu operującego na plikach, polecam zajrzeć do dokumentacji programów które tu wymieniłem oraz do dokumentacji pakietu textutils, bo być może problem który chcesz rozwiązać jest już rozwiązany?

Dodatkowe odnośniki