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?