This shows you the differences between two versions of the page.
|
uso:laboratoare:laborator-06:inspect-files [2025/10/25 22:48] daniel_ioan.dinu Fixed typo in [Căutarea informației într-un fișier] |
uso:laboratoare:laborator-06:inspect-files [2025/10/26 16:53] (current) daniel_ioan.dinu Typos in [Exerciții] |
||
|---|---|---|---|
| Line 98: | Line 98: | ||
| [...] | [...] | ||
| </code> | </code> | ||
| - | Observăm că pentru un fișier cu un număr mare de linii, așa cum este **binary_search.c**, afișarea întregului conținut pe ecran devine un impediment în a putea înțelege și urmări conținutul. De aceea vă încurajăm să folosiți ''%%less%%'' în loc de ''%%cat%%'' pentru a inspecta un fișier: vă este mult mai ușor să vă plimbați în interiorul fișierului și puteți folosi funcția search pentru a căuta în fișier. De asemeni, folosind ''%%less%%'' vă păstrați consola curată și puteți urmări mai ușor ce comenzi ați dat anterior și care au fost rezultatele acestora. | + | Observăm că pentru un fișier cu un număr mare de linii, așa cum este **binary_search.c**, afișarea întregului conținut pe ecran devine un impediment în a putea înțelege și urmări conținutul. De aceea, vă încurajăm să folosiți ''%%less%%'' în loc de ''%%cat%%'' pentru a inspecta un fișier: vă este mult mai ușor să vă plimbați în interiorul fișierului și puteți folosi funcția search pentru a căuta în fișier. De asemenea, folosind ''%%less%%'' vă păstrați consola curată și puteți urmări mai ușor ce comenzi ați dat anterior și care au fost rezultatele acestora. |
| Folosim comanda ''%%cat%%'' în combinație cu alte comenzi pentru a extrage sau filtra conținutul anumitor fișiere. Comanda ''%%cat%%'' primește ca argument calea către unul sau mai multe fișiere și afișează pe ecran conținutul concatenat al acestora. | Folosim comanda ''%%cat%%'' în combinație cu alte comenzi pentru a extrage sau filtra conținutul anumitor fișiere. Comanda ''%%cat%%'' primește ca argument calea către unul sau mai multe fișiere și afișează pe ecran conținutul concatenat al acestora. | ||
| Line 174: | Line 174: | ||
| * Procesele sunt sortate crescător, a.î. cel mai consumator este ultimul; vrem să fie sortate descrescător | * Procesele sunt sortate crescător, a.î. cel mai consumator este ultimul; vrem să fie sortate descrescător | ||
| - | Rezolvăm cele două probleme prin intermediul opțiunii ''%%--sort%%'': dacă punem un ''%%-%%'' (minus) în fața argumentului după care sortăm, o să sortăm descrescător. Rulăm comanda: | + | Rezolvăm cele două probleme prin intermediul opțiunii ''%%--sort%%'': dacă punem un ''%%-%%'' (minus) în fața argumentului după care sortăm, o să sortăm descrescător. Rulăm comanda nouă și vizualizăm rezultatul folosind ''%%less%%'': |
| <code bash> | <code bash> | ||
| Line 251: | Line 251: | ||
| ==== Exerciții ==== | ==== Exerciții ==== | ||
| - | - Căutați //patternul// "l" în fișierul ''%%binary_search.c%%'', pentru a vedea unde este folosit parametrul **left**. Observați cât de multe rezultate irelevante ați găsit datorită faptului că am căutat doar caracterul **l**. Aici există o lecție de învățat. Numele variabilelor sunt foarte importante: nu fac doar codul mai ușor de înțeles, dar ajută și căutarea. Folosiți //patternul// "param l" în încercarea de a restrânge căutarea. | + | - Căutați //pattern-ul// "l" în fișierul ''%%binary_search.c%%'', pentru a vedea unde este folosit parametrul **left** al funcției de căutare binară. Observați cât de multe rezultate irelevante ați găsit datorită faptului că am căutat doar caracterul **l**. Aici există o lecție de învățat. Numele variabilelor sunt foarte importante: nu fac doar codul mai ușor de înțeles, dar ajută și căutarea. Folosiți //pattern-ul// "param l" în încercarea de a restrânge căutarea. |
| - | - Căutați //patternul// "arr" în fișierul ''%%binary_search.c%%''. | + | - Căutați //pattern-ul// "arr" în fișierul ''%%binary_search.c%%''. |
| - | - Căutați //patternul// "binarysearch1" în fișierul ''%%binary_search.c%%'' pentru a vedea cum este apelată funcția de căutare. | + | - Căutați //pattern-ul// "binarysearch1" în fișierul ''%%binary_search.c%%'' pentru a vedea cum este apelată funcția de căutare. |
| ==== Extra: Opțiuni uzuale ale grep ==== | ==== Extra: Opțiuni uzuale ale grep ==== | ||
| Line 273: | Line 273: | ||
| === Căutarea case-insensitive === | === Căutarea case-insensitive === | ||
| - | Implicit, grep caută în mod case-sensitive patternul, așa cum putem observa din exemplul de mai jos: | + | Implicit, grep caută în mod case-sensitive pattern-ul, așa cum putem observa din exemplul de mai jos: |
| <code bash> | <code bash> | ||
| student@uso:~$ grep Search workspace/C/searching/binary_search.c | student@uso:~$ grep Search workspace/C/searching/binary_search.c | ||
| </code> | </code> | ||
| - | Pentru a efectua căutarea textului în mod case-insesnsitive, folosim opțiunea ''%%-i%%'', ca în exemplul de mai jos: | + | Pentru a efectua căutarea textului în mod case-insensitive, folosim opțiunea ''%%-i%%'', ca în exemplul de mai jos: |
| <code bash> | <code bash> | ||
| Line 292: | Line 292: | ||
| === Excluderea unui pattern === | === Excluderea unui pattern === | ||
| - | Pentru a afișa toate liniile, mai puțin pe cele care conțin pattern, folosim opțiunea ''%%-v%%'', ca în exemplul de mai jos: | + | Pentru a afișa toate liniile, mai puțin pe cele care conțin pattern-ul, folosim opțiunea ''%%-v%%'', ca în exemplul de mai jos: |
| <code bash> | <code bash> | ||
| Line 310: | Line 310: | ||
| === Căutarea recursivă a unui pattern === | === Căutarea recursivă a unui pattern === | ||
| - | În căutările noastre de până acum, ca și în exemplele de mai sus, am presupus că știm în ce fișiere se găsește informația căutată de noi. Acest lucru este adevărat pentru fișiere din sistem cu informații bine cunoscute, cum ar fi ''%%/proc/meminfo%%'', dar atunci când lucrăm cu un proiect nou, nu vom ști în ce fișiere să căutăm informația dorită. De exemplu, în cazul proiectului cu algoritmi implementați în C, noi am făcut presupunerea că vom găsi linii care conțin patternul **search** în fișierul ''%%workspace/C/searching/binary_search.c%%''. | + | În căutările noastre de până acum, ca și în exemplele de mai sus, am presupus că știm în ce fișiere se găsește informația căutată de noi. Acest lucru este adevărat pentru fișiere din sistem cu informații bine cunoscute, cum ar fi ''%%/proc/meminfo%%'', dar atunci când lucrăm cu un proiect nou, nu vom ști în ce fișiere să căutăm informația dorită. De exemplu, în cazul proiectului cu algoritmi implementați în C, noi am făcut presupunerea că vom găsi linii care conțin pattern-ul **search** în fișierul ''%%workspace/C/searching/binary_search.c%%''. |
| Atunci când nu știm în ce fișiere se află informația căutată, putem să-i spunem lui ''%%grep%%'' să caute recursiv prin toată ierarhia de fișiere dintr-un anumit director. Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%'', ca în exemplul de mai jos: | Atunci când nu știm în ce fișiere se află informația căutată, putem să-i spunem lui ''%%grep%%'' să caute recursiv prin toată ierarhia de fișiere dintr-un anumit director. Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%'', ca în exemplul de mai jos: | ||
| Line 371: | Line 371: | ||
| === Bonus: Căutarea unui cuvânt === | === Bonus: Căutarea unui cuvânt === | ||
| - | Din rezultatele căutărilor de mai sus observăm că ''%%grep%%'' caută patternul dat ca un subșir. Acest lucru se vede foarte ușor în rezultatul anterior: | + | Din rezultatele căutărilor de mai sus observăm că ''%%grep%%'' caută pattern-ul dat ca un subșir. Acest lucru se vede foarte ușor în rezultatul anterior: |
| <code bash> | <code bash> | ||
| Line 378: | Line 378: | ||
| workspace/C/leetcode/src/700.c:10:struct TreeNode *searchBST(struct TreeNode *root, int val) | workspace/C/leetcode/src/700.c:10:struct TreeNode *searchBST(struct TreeNode *root, int val) | ||
| </code> | </code> | ||
| - | Observăm că patternul **search** se regăsește în șirul ***searchBST**. Dacă dorim să căutăm cuvântul **search** folosim opțiunea ''%%-w%%'' (word) pentru a-i transmite utilitarului că patternul trebuie tratat ca un cuvânt, ca în exemplul de mai jos: | + | Observăm că pattern-ul **search** se regăsește în șirul ***searchBST**. Dacă dorim să căutăm cuvântul **search** folosim opțiunea ''%%-w%%'' (word) pentru a-i transmite utilitarului că pattern-ul trebuie tratat ca un cuvânt, ca în exemplul de mai jos: |
| <code bash> | <code bash> | ||
| Line 392: | Line 392: | ||
| === Exerciții === | === Exerciții === | ||
| - | - Găsiți toate fișierele care includ headerul ''%%stdio.h%%''. | + | - Găsiți toate fișierele care includ header-ul ''%%stdio.h%%''. |
| - | - Găsiți toate aparițiile patternului ''%%binarySearch%%''. | + | - Găsiți toate aparițiile pattern-ului ''%%binarySearch%%''. |
| - | - Găsiți toate aparițiile patternului ''%%quickSort%%''. | + | - Găsiți toate aparițiile pattern-ului ''%%quickSort%%''. |