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 |
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?