Am dat peste acest post care explică problema mea. Să presupunem că există un fișier numit file.txt care conține „foo World”.
Răspunsul postat de Tyler explică multe, totuși sunt confuz cu privire la modul

cat file.txt | grep "foo" 

este similar cu

grep "foo" file.txt 

Am crezut că grep necesită urmând

grep input argument // input is the string to search for (i.e) foo and // argument is the file path (./file.txt) 

Acum, ieșirea cat file.txt este conținutul fișierului care este foo World acesta devine intrarea grep? Am dreptate? Dacă da, am crezut că grep necesită un filepath ca șir?

Comentarii

  • În grep(1) pagina manuală (tastați man grep), veți vedea „grep [options] PATTERN [FILE …]”. Faptul că „FILE” este urmat de „…” înseamnă că pot exista mai multe argumente pentru fișiere; faptul că este între paranteze drepte ([]) înseamnă că argumentul fișierului este opțional (adică nu există a fi oricare). Continuați să citiți și veți vedea „ Grep caută fișierele de intrare denumite (sau intrarea standard dacă nu sunt denumite fișiere sau numele fișierului - este dat) … ” Deci: dacă nu sunt specificate fișiere, grep caută intrarea standard.

Răspuns

Majoritatea comenzilor pot face față intrare care este fie un fișier pe care trebuie să îl deschidă pentru introducere, fie ca un flux de date care sunt transmise comenzii prin STDIN.

Când conținutul cat file.txt este trimis către o altă comandă printr-o conductă (|) ieșirea prin STDOUT care este trecută la conducta din partea stângă, este configurată și alimentată la comanda care „s pe partea dreaptă a conductei” s STDIN.

Dacă conținutul nu este transmis prin STDOUT -> STDIN printr-o conductă, atunci comenzile pot primi date prin deschiderea fișierelor care sunt transmise prin nume prin argumente pentru linia de comandă.

Exemple

Trimite ieșirea către STDOUT.

$ cat file 1 2 3 4 5 

Ieșire din cat file este trimis prin STDOUT către grep” s STDIN prin conductă.

$ cat file | grep 5 5 

Procesarea fișierului ca argument de linie de comandă.

$ grep 5 file 5 

Prelucrarea directă a conținutului fișierului prin STDIN.

$ grep 5 < <(cat file) 5 

Aici I „M demonstrez că conținutul file poate fi direcționat către grep prin STDIN de mai sus.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *