Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 13466 razy

Wyświetlanie tekstu

Istnieją dwie instrukcje, które można wykorzystać do wyświetlenia tekstu, pierwszą z nich jest echo:

echo "Podaj swoje imię:"; read NAME; echo "Witaj $NAME";

Drugim sposobem jest wykorzystanie polecenia printf:

echo "Podaj swoje imię:"; read NAME; printf "Witaj $NAME";

Formatowanie zmiennych liczbowych poleceniem printf

Polecenie printf ma bardziej zaawansowane możliwości formatowania zmiennych liczbowych. Oto przykład:

NUMBER=100; printf "Liczba w systemie dziesiętnym: %in" $NUMBER printf "Liczba w systemie ósemkowym: %on" $NUMBER printf "Liczba w systemie szesnastkowym: %xn" $NUMBER

Wynik działania powyższego skryptu:

Liczba w systemie dziesiętnym: 100
Liczba w systemie ósemkowym: 144
Liczba w systemie szesnastkowym: 64

Kolorowanie tekstu wyświetlanego w konsoli

Polecenie printf oprócz bardziej zaawansowanego formatowania zmiennych liczbowych oferuje również możliwość wprowadzania kodów sterujących (ANSI escape code). Za pomocą odpowiedniego kodu można zmienić kolor wyświetlanego tekstu, oto przykład:

for i in $(seq 31 37) $(seq 91 97); do printf "\033[${i}m$i\n"; done

Wynik działania powyższego kodu będzie następujący:

31
32
33
34
35
36
37
91
92
93
94
95
96
97

Pozyskiwanie informacji o długości tekstu

W BASH-u długość zmiennej tekstowej pozyskuje się w następujący sposób:

STRING="Przykładowy tekst"; echo ${#STRING};

Wynik działania powyższego skryptu:

17

Wyciąganie fragmentu tekstu

Ogólna konstrukcja wyciągania fragmentu tekstu:

${NAZWA_ZMIENNEJ:POCZĄTEK_WYCINANEGO_TEKSTU:DŁUGOŚĆ_WYCINANEGO_TEKSTU}

Praktyczny przykład działania:

TEXT="Jakiś przykładowy tekst"; echo ${TEXT:6:11};

Wynik działania powyższego kodu:

przykładowy

Podmienianie znaków poleceniem tr

Polecenie tr umożliwia podmianę znaków z jednego łańcucha na znaki z łańcucha drugiego, np w taki sposób:

$VALUE="Some text"; echo $VALUE | tr [ometex] [OMETEX];

Powyższy kod wyświetli:

SOME TEXT

Ponieważ wszystkie litery z pierwszego ciągu znaków zostały podmienione na odpowiadające im litery z drugiego ciągu. Powyższy kod można uogólnić stosując specjalny zapis:

$VALUE="Some text"; echo $VALUE | tr [:lower:] [:upper:];

W powyższym kodzie [:lower:] oznacza wszystkie małe litery, zaś [:upper:] wszystkie duże litery. Czyli zamieniane będą małe literki na duże.

Zamiana tekstu w tekście za pomocą polecenia sed

Polecenie sed umożliwia podmienianie tekstu w tekście w następujący sposób:

TEXT="Nam strzelać nie kazano. Wstąpiłem na działo I spojrzałem na pole; dwieście armat grzmiało Artyleryi ruskiej ciągną się szeregi, Prosto, długo, adleko, jako morza brzegi; I widziałem ich wodza: przebiegł, mieczem skinął I jak ptak jedno skrzydło wojska swego zwinął; Wylewa się spod skrzydła ściśniona piechota Długą czarną kolumną, jako lawa błota. Nasypana iskrami bagnetów. Jak sępy Czarne chorągwie na śmierć prowadzą zastępy."; echo -e "$TEXT"; TEXT=$(echo "$TEXT" | sed "s/adleko/daleko/"); echo " Po zamianie "; echo -e "$TEXT";

W tekście przechowywanym w zmiennej TEXT znajduje się błąd, zwykła literówka w postaci: adleko, które powinno zostać zamienione na daleko. Dzięki poleceniu sed z opcją s można podmienić pierwsze wystąpienie wyrazu adleko na wyraz daleko. Jeżeli każde możliwe wystąpienie wyrazu ma być podmienione to polecenie sed powinno zostać użyte w następujący sposób:

TEXT=$(echo "$TEXT" | sed "s/adleko/daleko/g");

Na końcu musi być literka g.

Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.