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 student
./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' <?code> ** Ce observați? * Rulați comanda<code> 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
.grep
, cut