This is an old revision of the document!
Pentru tutorial, vom folosi următorul text:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh games:x:5:60:games:/usr/games:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh gdm:x:106:114:Gnome Display Manager:/var/lib/gdm:/bin/false kernoops:x:108:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false ieu:x:1000:1000:ieu,,,:/home/ieu:/bin/bash
passwd
aflat în directorul home al utilizatorului thales
./etc/passwd
(informații despre utilizatorii sistemului)/etc/shadow
criptatăhome
al utilizatoruluicat
pentru a afișa conținutul fișierului passwd
.man
un parametru astfel încât să numerotați linile din output.tac passwd
nl passwd
.cat
+ ce parametru?)head passwd
.cat passwd | head
.cat -n passwd | head
.
Vom folosi combinația cat -n
și operatorul |
(pipe) pentru a simplifica înțelegerea output-ului.
cat -n passwd | head -n 4
.cat -n passwd | head -n +4
.cat -n passwd | head -n -4
.cat -n passwd | tail
.cat -n passwd | tail -n 4
.cat -n passwd | tail -n -4
.cat -n passwd | tail -n +4
.cat -n passwd | head -n 6 | tail -n 2
.cat passwd | sort
.man
un parametru pentru sort
astfel încât sortarea să se facă în ordine inversă.cat passwd | uniq
.1st
.cat passwd | sort | uniq
.2nd
.Ce este diferit între 1st și 2nd?
wc
pentru a vedea câte linii are fiecare fișier.cat passwd
.cat passwd | cut -d':' -f1
.cat passwd | cut -d':' -f5
.cat passwd | cut -d':' -f6
.cat passwd | cut -d':' -f1,5,6
.cat passwd
.cat passwd | tr x X
cat passwd | tr ieu IEU
.cat passwd | tr ieu IE
.cat passwd | tr ieu I
.cat passwd | tr -d x
.cat passwd | tr -d home
.cat passwd | tr -s o
.cat passwd | grep var
.cat passwd | grep -v var
.cat passwd | grep ^r
.cat passwd | grep h$
.cat passwd | grep ^i.*h$
.cat passwd | grep ^[r,i]
.sed este un stream editor. Cel mai bine cunoscut pentru funcția de search and replace.
sed "s/foo/bar/g" in_file > out_file
Se poate adăuga parametrul -i
pentru editare “in place” a fișierului:
sed -i "s/foo/bar/g" in_file
Înlocuirea se poate face prin expresii regulate:
sed -i "s/\^first/First/g" file sed -i "s/[0-9]/X/g" file
În general, sintaxa se referă la o adresă (linii selectate) și la o acțiune asupra acelor linii:
# Pentru fiecare linie din text, dacă este între linia 3 și 4, printeaza-o; ignoră restul liniilor sed –n `3,4p’ foo.txt # Pentru fiecare linie din text, dacă este ultima linie, printeaza-o; ignoră restul liniilor sed –n `$p’ foo.txt
Se pot aplica mai multe acțiuni asupra unui fișier, folosind parametrul -e
la fiecare acțiune:
# Șterge liniile 4 și 2. sed -e '4d' -e '2d' file
awk este un întreg limbaj de procesare a textului.
În general, folosește un fișier de script pentru acțiuni, cu sintaxa:
awk –f awk.script foo.file
Există un bloc de BEGIN, unul de END și corpul scriptului.
Exemplu de script:
# Begin Processing BEGIN {print "Print Totals"} # Body Processing {total = $1 + $2 + $3} {print $1 " + " $2 " + " $3 " = "total} # End Processing END {print "End Totals"}
Rezultate:
Input Output 22 78 44 Print Totals 66 31 70 22 +78 +44 =144 52 30 44 66 +31 +70 =167 88 31 66 52 +30 +44 =126 88 +31 +66 =185 End Totals
Fiecare câmp dintr-o linie poate fi folosită ca o variabilă:
İnput 1 clothing 3141 1 computers 9161 1 textbooks 21312 2 clothing 3252 2 computers 12321 2 supplies 2242 2 textbooks 15462
awk ‘if ($2 =="computers“){print}'sales.dat
Output 1 computers 9161 2 computers 2321
date
și afișează un mesaj de forma Este ora X și Y minute
.home
are forma /home/USER
. (hint: /etc/passwd
)/usr/include
care includ antentul features.h
. (hint: grep, cut)