This shows you the differences between two versions of the page.
unixmix:capitole:capitol-06 [2014/09/11 10:54] razvan |
unixmix:capitole:capitol-06 [2014/09/11 12:25] (current) razvan [Exerciții] |
||
---|---|---|---|
Line 39: | Line 39: | ||
** Folosiți o metodă care numără inclusiv linile albe. | ** Folosiți o metodă care numără inclusiv linile albe. | ||
** Folosiți o altă metodă care nu numerotează linile albe. | ** Folosiți o altă metodă care nu numerotează linile albe. | ||
- | * Rulați comanda ''tac passwd'' | + | * Rulați comanda<code> |
+ | tac passwd | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''nl passwd''. | + | * Rulați comanda<code> |
+ | nl passwd | ||
+ | </code> | ||
** Cu ce este echivalentă? (''cat'' + ce parametru?) | ** Cu ce este echivalentă? (''cat'' + ce parametru?) | ||
=== head, tail === | === head, tail === | ||
- | * Rulați comanda ''head passwd''. | + | * Rulați comanda<code> |
+ | head passwd | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat passwd | head''. | + | * Rulați comanda<code> |
+ | cat passwd | head | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | head''. | + | * Rulați comanda<code> |
+ | cat -n passwd | head | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
Vom folosi combinația ''cat -n'' și operatorul ''|'' (pipe) pentru a simplifica înțelegerea output-ului. | Vom folosi combinația ''cat -n'' și operatorul ''|'' (pipe) pentru a simplifica înțelegerea output-ului. | ||
- | * Rulați comanda ''cat -n passwd | head -n 4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | head -n 4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | head -n +4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | head -n +4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | head -n -4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | head -n -4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | tail''. | + | * Rulați comanda<code> |
+ | cat -n passwd | tail | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | tail -n 4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | tail -n 4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | tail -n -4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | tail -n -4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | tail -n +4''. | + | * Rulați comanda<code> |
+ | cat -n passwd | tail -n +4 | ||
+ | </code> | ||
** Ce afișează? | ** Ce afișează? | ||
- | * Rulați comanda ''cat -n passwd | head -n 6 | tail -n 2''. | + | * Rulați comanda<code> |
+ | cat -n passwd | head -n 6 | tail -n 2 | ||
+ | </code> | ||
** Încercați să înțelegeți output-ul. | ** Încercați să înțelegeți output-ul. | ||
=== sort, uniq === | === sort, uniq === | ||
- | * Rulați comanda ''cat passwd | sort''. | + | * Rulați comanda<code> |
+ | cat passwd | sort | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
* Căutați în ''man'' un parametru pentru ''sort'' astfel încât sortarea să se facă în ordine inversă. | * Căutați în ''man'' un parametru pentru ''sort'' astfel încât sortarea să se facă în ordine inversă. | ||
- | * Rulați comanda ''cat passwd | uniq''. | + | * Rulați comanda<code> |
+ | cat passwd | uniq | ||
+ | </code> | ||
** Redirectați output-ul într-un fișier numit ''1st''. | ** Redirectați output-ul într-un fișier numit ''1st''. | ||
- | * Rulați comanda ''cat passwd | sort | uniq''. | + | * Rulați comanda<code> |
+ | cat passwd | sort | uniq | ||
+ | </code> | ||
** Redirectați output-ul într-un fișier numit ''2nd''. | ** Redirectați output-ul într-un fișier numit ''2nd''. | ||
Ce este diferit între 1st și 2nd? | Ce este diferit între 1st și 2nd? | ||
Line 85: | Line 117: | ||
=== cut, tr === | === cut, tr === | ||
- | * Rulați comanda ''cat passwd''. | + | * Rulați comanda<code> |
- | * Rulați comanda ''cat passwd | cut -d':' -f1''. | + | cat passwd |
+ | </code> | ||
+ | * Rulați comanda<code> | ||
+ | cat passwd | cut -d':' -f1 | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | cut -d':' -f5''. | + | * Rulați comanda<code> |
+ | cat passwd | cut -d':' -f5 | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | cut -d':' -f6''. | + | * Rulați comanda<code> |
+ | cat passwd | cut -d':' -f6 | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | cut -d':' -f1,5,6''. | + | * Rulați comanda<code> |
+ | cat passwd | cut -d':' -f1,5,6 | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd''. | + | * Rulați comanda<code> |
- | * Rulați comanda ''cat passwd | tr x X'' | + | cat passwd |
+ | </code> | ||
+ | * Rulați comanda<code> | ||
+ | cat passwd | tr 'x' 'X' | ||
+ | </code> | ||
** Ce s-a întâmplat? | ** Ce s-a întâmplat? | ||
- | * Rulați comanda ''cat passwd | tr ieu IEU''. | + | * Rulați comanda<code> |
+ | cat passwd | tr 'ieu' 'IEU' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | tr ieu IE''. | + | * Rulați comanda<code> |
+ | cat passwd | tr 'ieu' 'IE' | ||
+ | <?code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | tr ieu I''. | + | * Rulați comanda<code> |
+ | cat passwd | tr 'ieu' 'I' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | tr -d x''. | + | * Rulați comanda<code> |
+ | cat passwd | tr -d 'x' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | tr -d home''. | + | * Rulați comanda<code> |
+ | cat passwd | tr -d 'home' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | tr -s o''. | + | * Rulați comanda<code> |
+ | cat passwd | tr -s o | ||
+ | </code> | ||
** Ce observați? (ceva mai observabil pe prima linie prima linie) | ** Ce observați? (ceva mai observabil pe prima linie prima linie) | ||
+ | |||
=== grep === | === grep === | ||
- | * Rulați comanda ''cat passwd | grep var''. | + | * Rulați comanda<code> |
+ | cat passwd | grep 'var' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | grep -v var''. | + | * Rulați comanda<code> |
+ | cat passwd | grep -v 'var' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | grep ^r''. | + | * Rulați comanda<code> |
+ | cat passwd | grep '^r' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | grep h$''. | + | * Rulați comanda<code> |
+ | cat passwd | grep 'h$' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | grep ^i.*h$''. | + | * Rulați comanda<code> |
+ | cat passwd | grep '^i.*h$' | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
- | * Rulați comanda ''cat passwd | grep ^[r,i]''. | + | * Rulați comanda<code> |
+ | cat passwd | grep ^[r,i] | ||
+ | </code> | ||
** Ce observați? | ** Ce observați? | ||
Line 128: | Line 199: | ||
**sed** este un **stream editor**. Cel mai bine cunoscut pentru funcția de search and replace. | **sed** este un **stream editor**. Cel mai bine cunoscut pentru funcția de search and replace. | ||
- | <code> | + | <code> |
- | sed "s/foo/bar/g" in_file > out_file | + | sed 's/foo/bar/g' in_file > out_file |
</code> | </code> | ||
Line 135: | Line 206: | ||
<code> | <code> | ||
- | sed -i "s/foo/bar/g" in_file | + | sed -i 's/foo/bar/g' in_file |
</code> | </code> | ||
Line 141: | Line 212: | ||
<code> | <code> | ||
- | sed -i "s/\^first/First/g" file | + | sed -i 's/\^first/First/g' file |
- | sed -i "s/[0-9]/X/g" file | + | sed -i 's/[0-9]/X/g' file |
</code> | </code> | ||
Line 150: | Line 221: | ||
<code> | <code> | ||
# Pentru fiecare linie din text, dacă este între linia 3 și 4, printeaza-o; ignoră restul liniilor | # Pentru fiecare linie din text, dacă este între linia 3 și 4, printeaza-o; ignoră restul liniilor | ||
- | sed –n `3,4p’ foo.txt | + | sed -n '3,4p' foo.txt |
# Pentru fiecare linie din text, dacă este ultima linie, printeaza-o; ignoră restul liniilor | # Pentru fiecare linie din text, dacă este ultima linie, printeaza-o; ignoră restul liniilor | ||
- | sed –n `$p’ foo.txt | + | sed -n '$p' foo.txt |
</code> | </code> | ||
Line 170: | Line 240: | ||
<code> | <code> | ||
- | awk –f awk.script foo.file | + | awk -f awk.script foo.file |
</code> | </code> | ||
Line 209: | Line 279: | ||
<code> | <code> | ||
- | İnput | + | İnput |
1 clothing 3141 | 1 clothing 3141 | ||
1 computers 9161 | 1 computers 9161 | ||
Line 221: | Line 291: | ||
<code> | <code> | ||
- | awk ‘if ($2 =="computers“){print}'sales.dat | + | awk 'if ($2 =="computers"){print}' sales.dat |
</code> | </code> | ||
Line 228: | Line 298: | ||
Output | Output | ||
1 computers 9161 | 1 computers 9161 | ||
- | 2 computers 2321 | + | 2 computers 2321 |
</code> | </code> | ||
Line 235: | Line 305: | ||
# Realizați un oneliner care parsează output-ul comenzii ''date'' și afișează un mesaj de forma ''Este ora X și Y minute''. | # Realizați un oneliner care parsează output-ul comenzii ''date'' și afișează un mesaj de forma ''Este ora X și Y minute''. | ||
# Realizați un oneliner care afișează username-ul utilizatorilor reali din sistem. Considerăm un utilizator real, un utilizator al cărui director ''home'' are forma ''/home/USER''. (hint: ''/etc/passwd'') | # Realizați un oneliner care afișează username-ul utilizatorilor reali din sistem. Considerăm un utilizator real, un utilizator al cărui director ''home'' are forma ''/home/USER''. (hint: ''/etc/passwd'') | ||
- | # Realizați un oneliner care afișează numele fișierelor din ''/usr/include'' care includ antentul ''features.h''. (hint: grep, cut) | + | # Realizați un oneliner care afișează numele fișierelor din ''/usr/include'' care includ antentul ''features.h''. |
+ | #* **Hint**: ''grep'', ''cut'' |