Obsah

Práce s textem v shellu

Budeme tady dost pracovat s konfiguračními soubory /etc/passwd a /etc/group

Zobrazuje 'prvních' #n řádků ze souboru. Defaultně je #n 10, dá se nastavit parametrem -n. Tento parametr se dá nastavit i záporně - pak zobrazí vše krom |#n| posledních řádků.

tail

Zobrazí 'posledních' #n řádků ze souboru. Opět parametr -n, dá se nastavit i záporně - pak zobrazí od #ntého řádku všechny zbylé.

#zobrazí prvních 5 řádek z /etc/group
head -n 5 /etc/group  
 
#zobrazí z /etc/passwd vše krom posledních tří řádek
head -n -3 /etc/passwd 
 
#zobrazí poslední 20 záznamů ze systémového logu
tail -n -20 /var/log/messages

cut

Rozřeže data podle zadaného separátoru, zobrazí pouze zadané položky. Jiné použití - řeže po jednotlivých znacích. Parametry:

#zobrazí z /etc/passwd pouze přihlašovací jména společně s ID 
cat /etc/passwd | cut -d: -f1,3
 
#zobrazí měsíc z takto formátovaného data
echo "2010-05-31 12:54" | cut -b6-7

paste

Slepí dva nebo více souborů (jedno z toho může být standardní vstup - parametr pomlčka) zadaným spojovačem

paste -d: uzivatelska_jmena uzivatelska_id

Úloha 1

Chci /etc/group dvakrát - tj aby namísto 
[groupname]:[password]:[GID]:[user_list]
bylo
[groupname]:[password]:[GID]:[user_list]:[groupname]:[password]:[GID]:[user_list]

Úloha 2

Pomocí ''cut'' vypište do jednoho souboru seznam loginů z /etc/passwd, do druhého souboru uživatelská ID. Poté je slepte pomocí ''paste'', tak, aby byl výsledek ve formátu [ID]#[login].

sort

#seřadí /etc/passwd podle uživatelských ID (numericky)
sort -t: -k3 -n /etc/passwd

tr

Od pojmu translate. Změní v řetězcích znaky. Základní použití: tr [množinaZnaků] [množinaZnaků2]

Přepínače

Příklady

# Změní v passwd oddělující dvojtečky na dvoukříže
cat /etc/passwd | tr : "#"
 
# Ve vstupu změní velká písmenka na malá
echo "Ahoj Svete" | tr A-Z a-z
#>ahoj svete
 
# Odstrani z textu samohlasky
echo "Ahoj svete" | tr -d aeiouy
#>hj svt
 
# Vymaže z textu dvojité mezery
echo "Ahoj  svete    jak se    mas?" | tr -s " "
#>Ahoj svete jak se mas?

Úloha

Znáte Caesarovu šifru? Znamená to posunutí písmenek v abecedě o nějaký počet písmen. Například při posunutí 3 se z „ahoj“ stane „dkrm“.

Vytvořte pomocí příkazu tr dva scripty: Jeden bude šifrovat (o tři doprava), druhý bude rozšifrovávat (o tři doleva). Ve vstupu mohou být velká písmena, avšak diakritiku zanedbejme.


join

Velmi silný nástroj, jenž spojuje data podle zadaných položek. Příkaz JOIN najdete i v SQL databázích. Například: Máte jednu tabulku (pro nás soubor s nějakými oddělovači), ve které je:

[jméno],[id],[ID primární skupiny]

a druhou tabulku, ve které je

[ID skupiny],[název skupiny]

a chceme vypsat řádky, kde budou jména i názvy primární skupiny

Použijeme join - budeme spojovat přes [ID primární skupiny] z první tabulky a [ID skupiny] z druhé. U nás požadovaných dat se tyto dvě položky budou rovnat.

join -t, -1"3" -2"1" prvniTabulka druhaTabulka

Pozor: vstupní tabulky musí být podle spojovaného sloupce seřazeny (použijte sort)

join -t: -11 -24 sortedPasswd sortedGroup

—-

Odkazy