Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:laborator-07:inspect-files [2021/11/16 09:06]
liza_elena.babu [Inspectarea rapida a conținutului fișierelor]
uso:laboratoare:laborator-07:inspect-files [2021/11/16 09:24] (current)
liza_elena.babu [Opțiuni uzuale ale grep]
Line 10: Line 10:
   * Ne dorim să afișăm pe ecran conținutul fișierelor pentru a extrage și prelucra informații din acestea.   * Ne dorim să afișăm pe ecran conținutul fișierelor pentru a extrage și prelucra informații din acestea.
  
-==== Căutarea informației într-un fișier ==== 
- 
-Pentru a vedea rapid conținutul unui fișier folosim utlitarul ''​%%less%%''​. 
- 
-<​note>​ 
- 
- 
-De fapt, comanda ''​%%man%%''​ folosește utilitarul ''​%%less%%''​ pentru a afișa paginile de manual. ''​%%less%%''​ este pagerul implicit în majoritatea distribuțiilor Linux. 
-</​note>​ 
- 
-Avem fișierul ''​%%workspace/​C/​searching/​binary_search.c%%''​. Vrem să ne facem rapid o idee despre cum arată implementarea algoritmului **binary_search**. Inspectăm conținutul fișierului ''​%%workspace/​C/​searching/​binary_search.c%%'',​ folosind utilitarul ''​%%less%%'',​ ca în exemplul de mai jos: 
- 
-<code bash> 
-student@uso:​~$ less workspace/​C/​searching/​binary_search.c 
- 
-/** 
- * @file 
- * @brief Program to perform [binary 
- * search](https://​en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target 
- * value in a given *sorted* array. 
- * @authors [James McDermott](https://​github.com/​theycallmemac) - recursive 
- * algorithm 
- * @authors [Krishna Vedala](https://​github.com/​kvedala) - iterative algorithm 
- */ 
-#include <​assert.h>​ 
-#include <​stdio.h>​ 
- 
-/** Recursive implementation 
- * \param[in] arr array to search 
- * \param l left index of search range 
- * \param r right index of search range 
- * \param x target value to search for 
- * \returns location of x assuming array arr[l..r] is present 
- * \returns -1 otherwise 
- */ 
-int binarysearch1(const int *arr, int l, int r, int x) 
-{ 
-    if (r >= l) 
-    { 
-        int mid = l + (r - l) / 2; 
- 
-        // If element is present at middle 
-        if (arr[mid] == x) 
-            return mid; 
- 
-</​code>​ 
-Observăm că acum avem o sesiune interactivă în interiorul căreia putem explora fișierul. 
- 
-<​note>​ 
- 
- 
-În cadrul unei sesiuni ''​%%less%%''​ putem folosi aceeleași taste ca în cadrul sesiunii interactive ''​%%man%%''​ pentru navigarea în pagină: 
- 
-  * ''​%%Ctrl+n%%''/''​%%Ctrl+p%%''​ sau ''​%%j%%''/''​%%k%%''​ pentru a naviga, cu câte o linie, în jos, respectiv în sus; recomandăm utlizarea tastelor ''​%%j%%''/''​%%k%%''​ pentru a fi mai eficienți 
-  * ''​%%Ctrl+f%%''/''​%%Ctrl+b%%''​ pentru a naviga, cu câte o pagină de terminal, în jos, respectiv în sus 
-  * Search (''​%%/​%%'',​ ''​%%?​%%'',​ ''​%%n%%'',​ ''​%%N%%''​) 
-  * Go up (''​%%g%%''​),​ go down (''​%%G%%''​) 
-  * Help (''​%%h%%''​) pentru a afla mai multe despre cum putem folosi mai bine sesiunea interactivă 
-  * Quit (''​%%q%%''​) pentru a ieși din sesiunea interactivă 
- 
-Toate aceste informații se găsesc în pagina de manual a utilitarului ''​%%less%%'':​ ''​%%man less%%''​. 
-</​note>​ 
- 
-În sesiunea interactivă căutăm după cuvântul cheie **search**. Pentru a porni căutarea apăsăm tasta ''​%%/​%%'',​ introducem textul căutat (**search**) și apăsăm tasta ''​%%Enter%%''​. Apăsăm tasta ''​%%n%%''​ pentru a merge la următoarea apariție a textului căutat; apăsăm ''​%%n%%''​ până când ajungem la implementarea funcției ''​%%binarysearch2%%''​. 
- 
-=== Exerciții === 
- 
-  - Analizați, folosind ''​%%less%%'',​ algoritmul de căutare din fișierul ''​%%workspace/​C/​searching/​linear_search.c%%''​. Ce implementare este mai eficientă: **binary_search** sau **linear_search**?​ 
-  - Analizați, folosind ''​%%less%%'',​ algoritmul de sortare **quick_sort**. Folosiți utilitarul ''​%%find%%''​ pentru a găsi fișierul sursă care conține implementarea. 
-  - Analizați, folosind ''​%%less%%'',​ algoritmul de sortare **merge_sort**. Folosiți utilitarul ''​%%find%%''​ pentru a găsi fișierul sursă care conține implementarea. 
  
 ==== Prelucrarea informației dintr-un fișier ==== ==== Prelucrarea informației dintr-un fișier ====
Line 86: Line 16:
  
 <code bash> <code bash>
-student@uso:​~$ cat workspace/C/searching/binary_search.c +student@uso:​~$ cat ~/uso-lab/labs/05-cli/support/make-folder/hangman.
-/** +
- * @file +
- * @brief Program to perform [binary +
- * search](https://​en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target +
- * value in a given *sorted* array. +
- * @authors [James McDermott](https://​github.com/​theycallmemac) ​recursive +
- * algorithm +
- * @authors [Krishna Vedala](https:​//github.com/​kvedala) ​iterative algorithm +
- */ +
-#include <assert.h>+
 #include <​stdio.h>​ #include <​stdio.h>​
 +#include <​string.h>​
 +
 +int main() {
 +  // Get word to guess
 +  char answer[128];​
 +  printf("​Enter word to guess: ");
  
 [...] [...]
Line 228: Line 154:
  
 <code bash> <code bash>
-student@uso:​~$ cat workspace/C/searching/binary_search.c | grep search +student@uso:​~$ cat uso-lab/labs/05-cli/support/​make-folder/​hangman.c | grep gameover 
- * search](https://​en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target +  int gameover = 0; 
- * \param[in] arr array to search +  ​while ​(! gameover{ 
- * \param l left index of search range +    ​gameover = 1; 
- * \param r right index of search range +        ​gameover = 0;
- * \param x target value to search for +
-int binarysearch1(const int *arr, int l, int r, int x+
- +
-[...]+
 </​code>​ </​code>​
-În exemplul de mai sus, operatorul ''​%%|%%''​ trimite textul afișat de comanda ''​%%cat%%''​ către intrarea standard a comenzii ''​%%grep%%''​. Vom discuta mai multe despre ​acesta ​în secțiunea ​''​%%improve_cli_improve_shell_oneliners%%''​.+În exemplul de mai sus, operatorul ''​%%|%%''​ trimite textul afișat de comanda ''​%%cat%%''​ către intrarea standard a comenzii ''​%%grep%%''​. Acesta comandă este un exemplu de **oneliner**. Vom discuta mai multe despre ​oneliners ​în secțiunea ​următoare.
  
 Comanda următoare este echivalentă cu cea de mai sus: Comanda următoare este echivalentă cu cea de mai sus:
  
 <code bash> <code bash>
-student@uso:​~$ grep search workspace/C/searching/binary_search.c +student@uso:​~$ grep gameover uso-lab/labs/05-cli/support/make-folder/hangman.c 
- * search](https:​//en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target +  int gameover = 0; 
- * \param[in] arr array to search +  ​while ​(! gameover{ 
- * \param l left index of search range +    ​gameover = 1; 
- * \param r right index of search range +        gameover = 0;
- * \param x target value to search for +
-int binarysearch1(const int *arr, int l, int r, int x+
-[...]+
 </​code>​ </​code>​
 Observăm modul de folosire: ''​%%grep PATTERN cale/​către/​fișier%%''​. Observăm modul de folosire: ''​%%grep PATTERN cale/​către/​fișier%%''​.
Line 256: Line 175:
 ==== 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 improtante: 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 //​patternul//​ "​l"​ în fișierul ''​%%hangman.c%%'',​ pentru a vedea care sunt headerele incluse în acest fișiere (''​%%#​include <​...>​%%''​). Observați cât de multe rezultate irelevante ați găsit datorită faptului că am căutat doar caracterul **l**. Folosiți //​patternul//​ "include" în încercarea de a restrânge căutarea.
-  - Căutați //​patternul//​ "​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.+
  
 ==== Opțiuni uzuale ale grep ==== ==== Opțiuni uzuale ale grep ====
Line 267: Line 184:
  
 <code bash> <code bash>
-student@uso:​~$ grep -n search workspace/C/searching/binary_search.c +student@uso:​~$ grep -n gameover uso-lab/labs/05-cli/support/make-folder/hangman.c 
-4: * search](https:​//en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target +18 int gameover = 0; 
-14* \param[in] arr array to search +19 while (! gameover) { 
-15* \param l left index of search range +46   ​gameover = 1; 
-16* \param r right index of search range +49       ​gameover = 0;
-17* \param x target value to search for +
-21:int binarysearch1(const int *arr, int l, int r, int x) +
-[...]+
 </​code>​ </​code>​
 === Căutarea case-insensitive === === Căutarea case-insensitive ===
Line 281: Line 195:
  
 <code bash> <code bash>
-student@uso:​~$ grep Search workspace/C/searching/binary_search.c+student@uso:​~$ grep Gameover uso-lab/labs/05-cli/support/​make-folder/​hangman.c 
 +student@uso:​~$
 </​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-insesnsitive,​ folosim opțiunea ''​%%-i%%'',​ ca în exemplul de mai jos:
  
 <code bash> <code bash>
-student@uso:​~$ grep -i Search workspace/C/searching/binary_search.c +student@uso:​~$ grep -i Gameover uso-lab/labs/05-cli/support/make-folder/hangman.c 
- * search](https:​//en.wikipedia.org/​wiki/​Binary_search_algorithm) of a target +  int gameover = 0; 
- * \param[in] arr array to search +  ​while ​(! gameover{ 
- * \param l left index of search range +    ​gameover = 1; 
- * \param r right index of search range +        gameover = 0;
- * \param x target value to search for +
-int binarysearch1(const int *arr, int l, int r, int x+
-[...]+
 </​code>​ </​code>​
 === Excluderea unui pattern === === Excluderea unui pattern ===
Line 300: Line 212:
  
 <code bash> <code bash>
-student@uso:​~$ grep -v search workspace/C/searching/​binary_search.c | less +student@uso:​~$ grep -v gameover uso-lab/labs/05-cli/support/make-folder/hangman.c
-/** +
- * @file +
- * @brief Program to perform [binary +
- * value in a given *sorted* array. +
- * @authors [James McDermott](https://​github.com/​theycallmemac) ​recursive +
- * algorithm +
- * @authors [Krishna Vedala](https:​//github.com/​kvedala) ​iterative algorithm +
- */ +
-#include <assert.h>+
 #include <​stdio.h>​ #include <​stdio.h>​
 +#include <​string.h>​
 +
 +int main() {
 +  // Get word to guess
 +  char answer[128];​
 +  printf("​Enter word to guess: ");
 +  fflush(stdout);​
 +  scanf("​ %s", answer);
 +
 +  int N = strlen(answer);​
 +  int mask[N];
 +  for (int i=0; i < N; ++i) {
 +    mask[i] = 0;
 +  }
 +
 [...] [...]
 </​code>​ </​code>​
 +
 +Cu alte cuvinte, am afișat toate liniile din fișiere care nu conțin patternul ''​%%gameover%%''​.
 +
 === 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 patternul **gameover** în fișierul ''​%%uso-lab/labs/05-cli/support/​make-folder/​hangman.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:
  
 <code bash> <code bash>
-student@uso:​~$ grep -r search workspace/C/ | less+student@uso:​~$ grep -r gameover uso-lab/ | less 
 +uso-lab/​labs/​05-cli/​support/​make-folder/​hangman.c: ​ int gameover = 0; 
 +uso-lab/​labs/​05-cli/​support/​make-folder/​hangman.c: ​ while (! gameover) { 
 +uso-lab/​labs/​05-cli/​support/​make-folder/​hangman.c: ​   gameover = 1; 
 +uso-lab/​labs/​05-cli/​support/​make-folder/​hangman.c: ​       gameover = 0; 
 +uso-lab/​labs/​04-appdev/​support/​simple-make/​hangman.c: ​ int gameover = 0; 
 +uso-lab/​labs/​04-appdev/​support/​simple-make/​hangman.c: ​ while (! gameover) { 
 +uso-lab/​labs/​04-appdev/​support/​simple-make/​hangman.c: ​   gameover = 1; 
 +uso-lab/​labs/​04-appdev/​support/​simple-make/​hangman.c: ​       gameover = 0;
  
-workspace/​C/​leetcode/​src/​700.c:​struct TreeNode *searchBST(struct TreeNode *root, int val) 
-workspace/​C/​leetcode/​src/​700.c: ​       return searchBST(root->​left,​ val); 
-workspace/​C/​leetcode/​src/​700.c: ​       return searchBST(root->​right,​ val); 
-workspace/​C/​leetcode/​src/​35.c:​int searchInsert(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​src/​35.c:​int searchInsert(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​src/​35.c: ​       return searchInsert(nums,​ numsSize - 1, target); 
-workspace/​C/​leetcode/​src/​704.c:​int search(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​src/​704.c:/​* Another solution: Using bsearch() */ 
-workspace/​C/​leetcode/​src/​704.c:​int search(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​src/​704.c: ​   int *ret = bsearch(&​target,​ nums, numsSize, sizeof(int),​ cmpint); 
-workspace/​C/​leetcode/​README.md:​|35|[Search Insert Position](https://​leetcode.com/​problems/​search-insert-position/​) | [C](./​src/​35.c)|Easy| 
-workspace/​C/​leetcode/​README.md:​|108|[Convert Sorted Array to Binary Search Tree](https://​leetcode.com/​problems/​convert-sorted-array-to-binary-search-tree/​) | [C](./​src/​108.c)|Easy| 
-workspace/​C/​leetcode/​README.md:​|109|[Convert Sorted List to Binary Search Tree](https://​leetcode.com/​problems/​convert-sorted-list-to-binary-search-tree/​) | [C](./​src/​109.c)|Medium| 
-workspace/​C/​leetcode/​README.md:​|173|[Binary Search Tree Iterator](https://​leetcode.com/​problems/​binary-search-tree-iterator/​) | [C](./​src/​173.c)|Medium| 
-workspace/​C/​leetcode/​README.md:​|700|[Search in a Binary Search Tree](https://​leetcode.com/​problems/​search-in-a-binary-search-tree/​) | [C](./​src/​700.c)|Easy| 
-workspace/​C/​leetcode/​README.md:​|701|[Insert into a Binary Search Tree](https://​leetcode.com/​problems/​insert-into-a-binary-search-tree/​) | [C](./​src/​701.c)|Medium| 
-workspace/​C/​leetcode/​README.md:​|704|[Binary Search](https://​leetcode.com/​problems/​binary-search/​) | [C](./​src/​704.c)|Easy| 
-workspace/​C/​DIRECTORY.md: ​   * [Binary Search Tree](https://​github.com/​TheAlgorithms/​C/​blob/​master/​data_structures/​binary_trees/​binary_search_tree.c) 
-workspace/​C/​DIRECTORY.md: ​ * [Binary Search](https://​github.com/​TheAlgorithms/​C/​blob/​master/​searching/​binary_search.c) 
-workspace/​C/​DIRECTORY.md: ​ * [Fibonacci Search](https://​github.com/​TheAlgorithms/​C/​blob/​master/​searching/​fibonacci_search.c) 
 </​code>​ </​code>​
 === Best practice === === Best practice ===
Line 348: Line 257:
  
 <code bash> <code bash>
-student@uso:​~$ grep -nri search workspace/​C/ ​| less +student@uso:​~$ grep -nri uso-lab ​| less 
- +uso-lab/lectures/auto/demo/grades/​script.wiki:3:Pentru acest scenariuactualizați [[https://github.com/systems-cs-pub-ro/uso-lab|repository-ul public de USO]] și navigați în subdirectorul ''​lectures/auto/grades/''​: 
-workspace/C/leetcode/src/700.c:10:struct TreeNode *searchBST(struct TreeNode *rootint val) +uso-lab/lectures/auto/demo/grades/​script.wiki:6:student@uso:​~$ cd uso-lab 
-workspace/C/leetcode/src/700.c:​21: ​       return searchBST(root->left, val); +uso-lab/lectures/auto/demo/grades/​script.wiki:7:student@uso:​~/​uso-lab$ git pull 
-workspace/C/leetcode/src/700.c:25:        return searchBST(root->right, val); +uso-lab/lectures/auto/demo/grades/​script.wiki:8:student@uso:​~/​uso-lab$ cd lectures/auto/grades 
-workspace/C/leetcode/src/35.c:1:int searchInsert(int *nums, int numsSize, int target) +uso-lab/lectures/auto/demo/grades/script.wiki:9:student@uso:~/uso-lab/lectures/auto/grades$ ls 
-workspace/C/leetcode/src/35.c:18:int searchInsert(int *nums, int numsSize, int target) +uso-lab/lectures/auto/demo/grades/script.wiki:19:student@uso:~/uso-lab/lectures/auto/grades$ wc -l 2016-2017.csv 
-workspace/C/leetcode/src/35.c:27       ​return searchInsert(nums,​ numsSize ​1, target); +uso-lab/lectures/auto/demo/grades/script.wiki:21:student@uso:~/uso-lab/lectures/auto/grades$ wc -l 2017-2018.csv 
-workspace/C/leetcode/src/704.c:1:int search(int *nums, int numsSize, int target) +uso-lab/lectures/auto/demo/grades/script.wiki:23:student@uso:~/uso-lab/lectures/auto/grades$ wc -l 2018-2019.csv 
-workspace/C/leetcode/src/704.c:23:/* Another solutionUsing bsearch() */ +uso-lab/lectures/auto/demo/grades/script.wiki:25:student@uso:~/uso-lab/lectures/auto/grades$ wc -l 2019-2020.csv 
-workspace/C/leetcode/src/​704.c:​26:​int search(int *nums, int numsSize, int target) +uso-lab/lectures/auto/demo/grades/script.wiki:32:student@uso:~/uso-lab/lectures/auto/grades$ tail -n +2 2019-2020.csv | wc -
-workspace/C/leetcode/src/704.c:​28: ​   int *ret = bsearch(&​target,​ nums, numsSize, sizeof(int),​ cmpint); +uso-lab/lectures/auto/demo/grades/script.wiki:34:student@uso:~/uso-lab/lectures/auto/grades$ echo -n "2019-2020: " ; tail -n +2 2019-2020.csv | wc -
-workspace/​C/​leetcode/README.md:26:|35|[Search Insert Position](https://leetcode.com/problems/search-insert-position/) | [C](./src/35.c)|Easy| +uso-lab/lectures/auto/demo/grades/script.wiki:45:student@uso:~/uso-lab/lectures/auto/grades$ for i in *.csv; do echo -n "$(basename "​$i" ​.csv): " ; tail -n +2 "
-workspace/C/leetcode/README.md:35:|108|[Convert Sorted Array to Binary Search Tree](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/) | [C](./src/108.c)|Easy| +
-workspace/C/leetcode/​README.md:36:|109|[Convert Sorted List to Binary Search Tree](https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/) | [C](./src/109.c)|Medium| +
-workspace/C/leetcode/​README.md:47:|173|[Binary Search Tree Iterator](https://leetcode.com/problems/binary-search-tree-iterator/) | [C](./src/173.c)|Medium| +
-workspace/C/leetcode/​README.md:78:|700|[Search in a Binary Search Tree](https://leetcode.com/problems/search-in-a-binary-search-tree/) | [C](./src/700.c)|Easy| +
-workspace/C/leetcode/​README.md:79:|701|[Insert into a Binary Search Tree](https://leetcode.com/problems/insert-into-a-binary-search-tree/) | [C](./src/701.c)|Medium| +
-workspace/C/leetcode/README.md:80:|704|[Binary Search](https://​leetcode.com/​problems/​binary-search/) | [C](./src/704.c)|Easy| +
-workspace/​C/​.github/​pull_request_template.md:​20:​[ ] Search previous suggestions before making a new one, as yours may be a duplicate. +
-workspace/​C/​DIRECTORY.md:​31: ​   * [Binary Search Tree](https://​github.com/​TheAlgorithms/​C/​blob/​master/​data_structures/​binary_trees/​binary_search_tree.c) +
-workspace/​C/​DIRECTORY.md:338:## Searching+
 : :
 </​code>​ </​code>​
 Astfel avem o căutare cât mai cuprinzătoare și putem folosi funcția de căutare în sesiunea interactivă ''​%%less%%''​ pentru a găsi linia și fișierul care ne interesează. Astfel avem o căutare cât mai cuprinzătoare și putem folosi funcția de căutare în sesiunea interactivă ''​%%less%%''​ pentru a găsi linia și fișierul care ne interesează.
  
-=== 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: 
- 
-<code bash> 
-student@uso:​~$ grep -nri search workspace/​C/​ | less 
- 
-workspace/​C/​leetcode/​src/​700.c:​10:​struct TreeNode *searchBST(struct TreeNode *root, int val) 
-</​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: 
- 
-<code bash> 
-student@uso:​~$ grep -nri -w "​search"​ workspace/​C/​ | less 
- 
-workspace/​C/​leetcode/​src/​704.c:​1:​int search(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​src/​704.c:​26:​int search(int *nums, int numsSize, int target) 
-workspace/​C/​leetcode/​README.md:​26:​|35|[Search Insert Position](https://​leetcode.com/​problems/​search-insert-position/​) | [C](./​src/​35.c)|Easy| 
-[...] 
-</​code>​ 
-Observăm că acum rezultatele conțin doar cuvântul **search**. 
  
 === Exerciții === === Exerciții ===
  
-  - Găsiți toate fișierele care includ headerul ''​%%stdio.h%%''​. +  - Găsiți toate fișierele ​din sistem ​care includ headerul ''​%%stdio.h%%''​.
-  - Găsiți toate aparițiile patternului ''​%%binarySearch%%''​. +
-  - Găsiți toate aparițiile patternului ''​%%quickSort%%''​.+
  
uso/laboratoare/laborator-07/inspect-files.1637046370.txt.gz · Last modified: 2021/11/16 09:06 by liza_elena.babu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0