Awk a Sed
1. Výpis riadku z /etc/passwd, ktorý obsahuje na začiatku string “roo”
cat /etc/passwd | awk /^roo/
2. Vypíšeme len adresáre z výpisu ls -l
ls -l | awk ‘/^d/ { print $9 }’
3. Vypíšeme celý riadok, ktorý obsahuje adresár:
ls -l | awk ‘/^d/ { print $0 }’
4. Vypíšeme obsah súboru /etc/passwd
awk '{ print $0 } ' /etc/passwd
5. Vypíšeme užívateľské mená z /etc/passwd
awk -F':' '{ print $1 }' /etc/passwd
6. Duplikujeme každý riadok:
awk '{ print } { print } ' /etc/passwd
alebo
awk '{ print ; print } ' /etc/passwd
7. Použijeme BEGIN na vytvorenie premennej a následne ju použijeme v END
awk 'BEGIN { CIARA="---------------"; print CIARA } { print } END { print CIARA }' /etc/passwd
8.Očíslujeme riadky z /etc/passwd
awk -F':' '{ print NR, $1 }' /etc/passwd
9. Výpis prvých 15 riadkov z /etc/passwd
awk ‘NR <= 15 { print }’ /etc/passwd
10. Vypíšeme všetkých užívateľov, ktorí maju v /etc/passwd bash
awk -F’:’ ‘$7 == “/bin/bash” ‘ /etc/passwd
11. Spočítame počet riadkov a sčítame čísla v druhom stĺpci
awk ‘ NR > 0 { sum += $2 }END{ print “Pocet riadkov je”, NR, “a suma druheho stlpca je”, sum }’ subor
12. Vypíšeme riadky, ktoré obsahujú písmeno R a vypíšeme zo stĺpca 3 od znaku 20 5 znakov, následne ich sčítame
awk ‘/R/ { print substr($3,20,5) }’ | awk ‘BEGIN{SUM=0} {SUM+=$1} END{print SUM}’
SED:
1. Substitucia slov/znakov:
sed s/day/night/ <old >new 2. Text dame do zatvorky, cisla nie: echo abcd1234 | sed 's/[a-z]*/(&)/' 3. Zdvojime cisla cez & co je docasne ulozisko
echo "123 abc" | sed 's/[0-9][0-9]*/& &/' 4. Vymazeme cisla, ostane iba text s malymi pismenami
echo abcd123 | sed 's/\([a-z]*\).*/\1/' 5. Zamenime poradie stringov: echo "abcd dcba" | sed 's/\([a-z]*\) \([a-z]*\)/\2 \1/' 6. Otocime text odzadu: echo 123 | sed 's/^\(.\)\(.\)\(.\)/\3\2\1/' 7. Substitucia v jednom kroku viac znakov:
sed -e 's/a/A/' -e 's/b/B/' <old >new 8. Zmenime velke A na male a v riadkoch 1 - 100
sed '1,100 s/A/a/' 9. Vypis prvych 10 riadkov:
sed -n '1,10 p' sed -n '11,$ !p' sed '1,10 !d' sed '11,$ d' 10. Editacia - pridanie riadku pred riadok so slovom "WORD"
#!/bin/sh sed ' /WORD/ i\ Add this line before every line with WORD ' 11. Editacia - vymena riadku s vyskytom slova WORD za iny
#!/bin/sh sed ' /WORD/ c\ Replace the current line with the line '
12. Editacia - pridanie riadku pred, pridanie riadku po a vymena riadku s vyskytom slova WORD
#!/bin/sh sed ' /WORD/ { i\ Add this line before a\ Add this line after c\ Change the line to this one }'