Sunteți pe pagina 1din 6

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare Informatica si Microelectronica

Raport
Lucrarea de laborator Nr.4

Disciplina: Sisteme de operare, mecanisme interne și


principii de proiectare.

Tema: Procesarea fluxurilor textuale în SO GNU/Linux

A îndeplinit st.gr.FI-201 Buza Dina


A verificat Colesnic Victor

Chișinău 2022
Lucrare de laborator Nr.4

Tema: Procesarea fluxurilor textuale în SO GNU/Linux


Scopul lucrării: studierea procesului, intrarea și ieșirea standard a procesului, legarea
proceselor de I/O, utilizarea ieșirii unui proces ca parametru al unui alt proces, expresii
regulate și filtrarea fluxurilor textuale.
Noțiuni teoretice:
Controlul (administrarea) intrărilor-ieșirilor proceselor (comenzilor). Implicit, fiecare proces are
deschise trei fișiere (trei fluxuri standard) . Aceste trei fluxuri standard (ca și oricare alte fișiere deschise) pot
fi redirecționate către alte dispozitive (fișiere), altele decât ecranul sau tastatura. Termenul “redirecționare”
semnifică în acest caz: ieșirea fișierului (comenzii, programului) să fie transmisă la intrarea altui fișier
(comandă, program). Pentru aceasta este utilizat numărul descriptorului standard.
Fluxurile sunt, de asemenea, numerotate:
stdin - 0, stdout - 1, stderr - 2.
Stdin
Fişier de intrare, text, este intrarea standard – tastatura. Dar acesta este un flux destul de interesant și
convenabil. De exemplu, este utilizat de un server web atunci când solicită interpreților să execute scripturi.
Fluxul de intrare standard transportă de obicei date de la utilizator la program. Programele care presupun
intrarea standard primesc de obicei intrarea de la un dispozitiv cu tastatură. Intrarea standard se oprește când
ajunge la EOF (sfârșitul fișierului), ceea ce indică faptul că nu mai sunt date de citit. prin CGI.
Stdout
  Fişier de iesire, text, este ieşirea standard - ecranul monitorului. De exemplu, când scriem comanda
ls, aceasta afișează lista de foldere și fișiere în acest flux. Când ieșirea standard nu este redirecționată către
niciun fișier, imprimă text pe afișajul terminalului. Când este utilizată fără opțiuni suplimentare,
comanda  echo  imprimă orice argument care i se transmite pe linia de comandă.
stderr
Fişier de iesire, text, este ieşirea standard unde sunt scris mesajele de eroare - ecran. Dacă programul nu a
putut face totul bine, scrie în acest fir. Eroarea standard înregistrează erorile care apar în timpul executării
programului. Ca și în cazul ieșirii standard, acest flux este transmis în mod implicit la terminalul de afișare.
Instrucţiunile
Sort
Sortează textul în ordine de creștere sau descreștere, în dependență de opțiuni.
Uniq
Elimină șirurile care se repetă dintr-un fișier care a fost sortat.
Cut
Extrage unele câmpuri din fișierele textuale (prin câmp înțelegem secvență de simboluri până la spațiu).
Head
Extrage liniile de început din fișier la stdout.
Tail
Extrage liniile de sfârșit din fișier la stdout. Este folosită pentru a tipări ultimele linii dintr-un fișier.
Dintre opțiunile cele mai des folosite amintim:
-c - tipărește numărul specificat de bytes din fișier
-n - tipărește numărul specificat de linii din fișier
-f - monitorizează fișierul
Tr
Inlocuiește unele simboluri cu altele. Este utilizat pentru a traduce, șterge sau comprima caractere.
Opțiuni pentru comanda tr:
 -c: completează setul de caractere din șir.
 -d: Eliminați caracterele din set1.
 -s: Înlocuiește caracterele duplicate enumerate în set1 al unei singure apariții.
 -t: Trunchiază set1.
Destinația utilitarelor
Grep
Comandă UNIX pentru căutare de text. Denumirea vine de la primele litere ale „global/regular
expression/print”, ce reprezintă o serie de comenzi pentru editoare de text precum ed. Comanda "grep" caută
în fișiere sau în intrarea standard liniile care corespund unei expresii regulate date și le scrie către ieșirea
standard.
Utilitară pentru căutarea şi sortarea liniilor introduse şi afişarea anumitor tipare (şiruri de caractere) ca
rezultat al procesării:
grep pattern [file...] – caută fragmente de text în fișier/fișiere, care corespund șablonului
pattern, unde pattern poate fi linie simplă sau expresie regulată.
Sed
“Editor de flux” neinteractiv. Preia textul de la dispozitivul stdin sau dintr-un fișier text, execută
unele operații asupra liniilor după care afișează rezultatul pe stdout sau într-un fișier. Inserează / modifică
/ adaugă text fără a deschide vizual fișierul. Sed determină, reieșind din spațiul de adrese dat, liniile asupra
cărora vor fi executate operațiile. Spațiul de adresă al liniilor este desemnat de numărul de ordine al acestora
sau de șablon. De exemplu, comanda 3d va obliga sed să elimine linia a treia, iar instrucțiunea /windows/d
va conduce la eliminarea tuturor liniilor, care conțin cuvântul "windows". Cel mai frecvent sunt utilizate
comenzile:
p – imprimare (pe stdout),
d – eliminare/ștergere și
s – înlocuire.
Câțiva parametri importanți:
 -r suport extins de sintaxă regex
 -i editarea „în loc”
Awk
Utilitară pentru căutarea contextuală și transformare a textului, instrument pentru extragerea și/sau
procesarea câmpurilor (coloanelor) în fișiere text structurate. Awk împarte fiecare linie în câmpuri
individuale. În mod implicit, câmpurile sunt secvențe de caractere separate prin spații, dar există
posibilitatea de a desemna alt caracter ca separator de câmp. Awk analizează și procesează fiecare câmp
aparte.
Ne ajută să avem un control mai mare atunci când procesăm date din alte comenzi sau
comenzi. Numele AWK derivă din inițialele prenumelor autorilor săi: Alfred Aho, Peter Weinberger și
Brian Kernighan.
Această comandă oferă un limbaj de script pentru procesarea textului cu care putem: Defini variabile, utiliza
șiruri și operatori aritmetici, utiliza controlul fluxului și cicluri, și genera rapoarte formatate. De fapt, Awk
este mai mult decât o simplă comandă de procesare a modelelor, este un întreg limbaj de analiză
semantică.
Clase de caractere POSIX
POSIX (English Portable Operating System Interface) este un set de standarde care descriu interfețele dintre
un sistem de operare și un program de aplicație (API de sistem), o bibliotecă de limbaj C și un set de
aplicații și interfețele acestora.
 [:class:] metodă alternativă de a specifica un diapazon de caractere.
 [:alnum:] corespunde caracterelor alfanumerice. Este echivalentă expresiei [A-Za-z0-9].
 [:alpha:] corespunde caracterelor alfabetului. Este echivalentă expresiei [A-Za-z].
 [:blank:] corespunde caracterului spațiu sau tabulare.
 [:cntrl:] corespunde caracterelor de control.
 [:digit:] corespunde setului de cifre zecimale. Este echivalentă expresiei [0-9].
 [:lower:] corespunde caracterelor alfabetului din registrul inferior. Echivalentă expresiei [a-z].
 [:space:] corespunde caracterelor de spațiere (spațiu și tabulare orizontală).
 [:graf:] corespunde unui set de caractere din gama ASCII 33 - 126.
 [:print:] corespunde unui set de caractere din gama ASCII 32 – 126.
 [:upper:] corespunde caracterelor alfabetului din registrul superior. Echivalentă expresiei [A-Z].
 [:xdigit:] corespunde setului de cifre hexazecimale. Este echivalentă expresiei [0-9A-Fa-f].
Desfășurarea lucrării:
a) Creați un nou subdirector unde veți plasa toate script-urile și fișierele pentru extragerea
rezultatelor.

b) Scrieți script-uri, care vor rezolva următoarele probleme:


1) Creați fișierul errors.log, în care veți plasa toate liniile din toate fișierele directorului
/var/log/ accesibile pentru citire, care conțin secvența de caractere ACPI. Afișați pe ecran
liniile din errors.log, care conțin numele fișierelor, excluzând calea acestor fișiere.

2) Calculați numărul total de linii în fișierele directorului /var/log/ cu extensia log. Afișați
acest număr pe ecran.
3) Creați fișierul full.log, în care veți plasa liniile din fișierul /var/log/Xorg.0.log, care
conțin avertizări și mesaje informaționale, înlocuind marcherii avertizărilor (WW) și mesajelor
informaționale (II) cu cuvintele Warning: și Information:, astfel încât în fișierul rezultat mai
întâi să apară toate mesajele informaționale, iar apoi toate avertizările. Afișați conținutul
fișierului full.log pe ecran.

4) Creați fișierul emails.lst, în care veți plasa toate adresele de poștă electronică, depistate în
fișierele directorului /etc. Adresele vor urma consecutiv, separate prin virgulă. Afișați
conținutul fișierului emails.lst pe ecran.

Concluzie:
În urma efectuării lucrării de laborator am studiat procesul, intrarea și ieșirea standard a
procesului, legarea proceselor de I/O, utilizarea ieșirii unui proces ca parametru al unui alt proces, expresii
regulate și filtrarea fluxurilor textuale. Am însușit noțiunile : stdin, stdout, stderr, la fel și modul de lucru al
instrucţiunile - sort, uniq, cut, head, tail, tr.Am aflat care este destinația utilitarelor grep, sed, awk și ce
însemnp clasele de caractere POSIX.
Cunoștințele acumulate la efectuarea acestei lucrări de laborator, mă vor ajuta în studiul continuu și
aprofundat al obiectului de studiu, și îmi oferă posibilitatea de a căpăta o anumită experienţă de lucru în
sistemul de operare Linux.

S-ar putea să vă placă și