Tags Posts tagged with "trs"

trs

przez -
13 1238
Konsola

Program trs służy do zamiany łańcuchów znakowych. Jego działanie jest podobne do polecenia tr, jednak zamienia napisy a nie tylko pojedyncze znaki. Program ten jest częścią pakietu konwert służącego do konwersji plików z różnymi kodowaniami znaków.

Instalacja trs

Jeśli używamy dystrybucji zarządzającej pakietami za pomocą yuma, wpisujemy:

yum install konwert

Jeśli używamy dystrybucji zarządzającej pakietami za pomocą apt, wpisujemy:

apt-get install konwert

Niestety, część dystrybucji nie posiada tego programu w repozytoriach. Ze względu na fakt, że ostatnie wydanie powstało w 1998 roku, kompilacja może przysporzyć odrobinę trudności. Poniżej metoda polegająca na pobraniu źródeł programu konwert wraz z patchem, a następnie wyciągnięciu, spatchowaniu i skompilowaniu samego programu trs (wraz z plikiem man):

wget https://launchpad.net/ubuntu/+archive/primary/+files/konwert_1.8.orig.tar.gz --no-check-certificate
wget https://launchpadlibrarian.net/40339444/konwert_1.8-11.2build1.diff.gz --no-check-certificate
tar xzvf konwert_1.8.orig.tar.gz konwert-1.8/bin/trs.cc
gzip -d konwert_1.8-11.2build1.diff.gz
cat konwert_1.8-11.2build1.diff |head -n 991 | tail -n 67
konwert-1.8/bin/trs.cc.patch
cd konwert-1.8/bin/
patch trs.cc trs.cc.patch
g++ -Wall -O2 -fomit-frame-pointer -pipe trs.cc -o trs
cd ../..
mv konwert-1.8/bin/trs ./trs
rm -r konwert-1.8

Po skompilowaniu warto umieścić program w katalogu, który jest dopisany do zmiennej $PATH, czyli na przykład /usr/bin.

Sposób użycia trs

Program trs służy do kopiowania strumienia wejściowego do strumienia wyjściowego przy okazji zmieniając znaki. Przykład użycia:

echo "Ala ma kota" |trs -e 'm sprzedał'

Powyższe polecenie da nam w efekcie zdanie “Ala sprzedała kota”. Podczas podawania reguł można stosować standardowych eskejpów. Najczęściej używane:

  • \n – kod znaku końca linii
  • \s – kod spacji
  • \t – kod tabulatora
  • \\ – kod znaku \
  • \/ – kod znaku /
  • \nnn – nnn to kod oct znaku
  • \xnn – nn to kod hex znaku
  • \! – pusty łańcuch

Podczas używania programu pierwsze reguły mają pierwszeństwo, dzięki czemu możemy uzyskać taki efekt:

$ echo Leeloo |trs -e 'el n e i i aqq o\}\n x o u'
Linux

Przykłady zastosowania trs

Programu można używać w skryptach, jest prostszy niż sed, a przy okazji pozwala na łatwe używanie znaku tabulatora czy znaku końca linii. Pozwala też zoptymalizować i przyspieszyć niektóre czynności.

Porównajmy ściąganie wszystkich plików *.jpg ze strony http://osworld.pl/spotkania. Pierwszy skrypt będzie używał opcji zaszytych w programie wget, drugi zaś będzie posiłkował się programem trs.

Skrypt 1

date
wget -m -l 1 -A jpg http://osworld.pl/spotkania -o wget_skr_1
date
cat wget_skr_1 |tail -n 2

Wynik działania

nie, 26 sie 2012, 16:19:41 CEST
nie, 26 sie 2012, 16:21:00 CEST
ZAKOŃCZONO --2012-08-26 16:21:00--
Pobrano: 113 plików, 11M w 49s (232 KB/s)

Skrypt 2

date
wget http://osworld.pl/spotkania -O poczatek.html -o wget_skr_2
cat poczatek.html|trs -e '\x27 \n \" \n'|grep jpg >lista
wget -m -i lista -o wget_skr_2
date
cat wget_skr_2 |tail -n 2

Wynik działania

nie, 26 sie 2012, 16:23:35 CEST
nie, 26 sie 2012, 16:24:06 CEST
ZAKOŃCZONO --2012-08-26 16:24:06--
Pobrano: 26 plików, 6,6M w 27s (249 KB/s)

Czas wykonywania zadań w pierwszym przypadku to 1:19, w drugim 0:31. Nie bez znaczenia jest też fakt, że oba skrypty zapisały na dysku taką samą liczbę obrazków, natomiast pierwszy skrypt tak naprawdę pobrał 113 plików, drugi zaś 27 plików. W tym, przypadku nie była to wielka różnica, jeśli jednak na stronie byłyby komentarze lub więcej linków, wtedy różnica w czasie i ilości ściągniętych (niekoniecznie zapisanych) plików byłaby znacznie większa.

Polecane

Company of Heroes 2

0 233
Dobra wiadomość! Gra Company of Heroes 2 jest obecnie dostępny za darmo w Humble Store. Opracowany przez Relic Entertainment i pierwotnie wydany dla Windows...
ataribox

0 223
Mozilla Firefox

1 381