POSIXové utility pre prácu s textom

Prehľad utilít

  • echo: zapisuje slová oddelené medzerou na štandardný výstup
  • printf: formátovaný výpis reťazcov v duchu C
  • cut: berie riadky s položkami oddelenými jedným znakom oddeľovača a vyberá jednotlivé položky. Zároveň dokáže vracať podreťazce reťazca.
  • read: načíta riadok do premennej
  • awk: filtrovanie riadkov na základe vzorov; berie riadky s položkami oddelenými bielym miestom a vyberá položky.
  • xargs: Prevádza riadky na parametre príkazového riadka. [separátny článok]
  • nl: Čísluje riadky
  • sed: nahrádzanie textu v riadkoch; filtrovanie riadkov na základe kritérií. [separátny článok]
  • tr: nahrádzanie znakov, mazanie znakov, zlučovanie duplicitných znakov
  • head: výber prvých n riadkov
  • tail: výber posledných n riadkov, výber riadkov od _n_tého do konca súboru
  • uniq: rušenie duplicitných riadkov
  • wc: spočítavanie riadkov, slov, znakov, bajtov
  • sort: triedi riadky podľa položiek

Filtrovať prvých n riadkov?

head

Prvé tri riadky:

head -n3 /etc/passwd

sed

Prvé tri riadky:

sed -n 1,3p /etc/passwd

Filtrovať posledných n riadkov?

tail

Posledné tri riadky

tail -n3 /etc/passwd

Preskočiť prvých n riadkov?

tail

Vynechá prvých 5 riadkov, resp. začne vypisovať až od 6. riadka

tail -n+6 /etc/passwd

sed

Vymaže prvý až piaty riadok:

sed 1,5d /etc/passwd

Vrátiť len riadky, ktoré obsahujú text / spĺňajú regulárny výraz

grep

Procesy používateľa novotnyr, teda riadky začínajúce na novotnyr:

ps auxw | grep ^novotnyr

Vrátiť len riadky, ktoré neobsahujú text

grep

Používatelia, ktorí nemajú zakázané prihlásenie

grep -v "/bin/false" /etc/passwd

Mám riadok s položkami oddelenými jedným znakom. Chcem vybrať len niektoré položky.

cut

Súbor /etc/passwd má riadky s položkami oddelenými dvojbodkou. Prvá a siedma položka, teda login a shell:

cut -d":" -f1,7 /etc/passwd

awk

Položky na výstupe budú oddelené medzerou:

awk -F":" '{ print $1, $7} ' /etc/passwd

Mám riadok s položkami oddelenými jednou či viacerými medzerami. Chcem vybrať len niektoré položky.

Príkaz ls -l vracia položky oddelené medzerami:

-rw------- 1 novotnyr novotnyr    56 Jan  4 17:42 mena.txt

tr + cut

Pomocou tr -s zrušíme viacnásobné výskyty oddeľovača (medzery) a následne použijeme cut.

ls -lA | tail -n+2 | tr -s " "  | cut -d" "  -f5,9

Príkaz tail slúži na odseknutie prvého riadka so sumárnou informáciou.

tr + cut [verzia 2]

Pomocou tr -s nahradíme výskyty medzier tabulátormi a zároveň zrušíme viacnásobné výskyty. Následne použijeme cut s implicitným oddeľovačom tabulátorom.

ls -lA | tail -n+2 | tr -s " " "\t" | cut -f5,9

Príkaz tail slúži na odseknutie prvého riadka so sumárnou informáciou.

awk

V awk použijeme vzor “ak je číslo riadku väčšie než 1” a následne vytlačíme piatu a deviatu položku. V awk je implicitným oddeľovačom biele miesto.

ls -lA | awk 'NR > 1 { print $5, $9 }'

Chcem previesť medzery na podčiarkovníky

tr

echo "Jozef Mak" | tr " " "_"

Chcem zmeniť oddeľovač na iný znak

tr

Zmení dvojbodky na tabulátory v /etc/passwd:

tr ":" "\t" < /etc/passwd

sed

Zmení dvojbodky na tabulátory v /etc/passwd:

sed 's : \t g' /etc/passwd

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *