törmäsin tähän viestiin, joka selittää ongelmani. Oletetaan, että tiedostossa file.txt on ”foo World”.
Tylerin lähettämä vastaus selittää paljon, mutta olen hämmentynyt siitä, kuinka

cat file.txt | grep "foo" 

on samanlainen kuin

grep "foo" file.txt 

Luulin, että grep vaati seuraava

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

Nyt cat file.txt -lähtö on tiedoston sisältö, joka on foo World tästä tulee grep? Olen oikeassa? Jos näin oli, luulin, että grep vaatii tiedostopolun merkkijonona?

Kommentit

  • grep(1) man -sivu (kirjoita man grep), näet ”grep [vaihtoehdot] MALLI [TIEDOSTO …]”. Se, että ”FILE”: n jälkeen seuraa ”…”, tarkoittaa, että tiedosto argumentteja voi olla useita; se, että se on hakasulkeissa ([]) tarkoittaa, että tiedosto-argumentti on valinnainen (ts. siinä ei ole olla mikä tahansa). Jatka lukemista ja näet ” Grep etsii nimettyjä syötetiedostoja (tai vakiotuloa, jos tiedostoja ei ole nimetty, tai tiedoston nimeä - annetaan). ” Joten: jos tiedostoja ei ole määritetty, grep etsii vakiotulosta.

Vastaa

Useimmat komennot voivat käsitellä syötä se joko tiedosto, joka heidän on avattava syötettä varten, tai tietovirrana, joka on lähetetty komennolle STDIN: n kautta.

Kun cat file.txt lähetetään toiselle komennolle putken kautta (|) lähtö STDOUT: n kautta, joka on siirretty vasemmanpuoleiselle putkelle, asetetaan ja syötetään komennolle, joka ”putken oikealla puolella olevat” s STDIN.

Jos sisältöä ei välitetä STDOUT -> STDIN: n kautta putken kautta, komennot voivat vastaanottaa tietoja avaamalla tiedostoja, jotka välitetään nimellä. komentoriviargumentit.

Esimerkkejä

Lähetetään tulosteet STDOUT: lle.

$ cat file 1 2 3 4 5 

Lähtö kohteesta cat file lähetetään STDOUTin kautta grep” s STDIN: lle putken kautta.

$ cat file | grep 5 5 

Käsitellään tiedostoa komentoriviargumenttina.

$ grep 5 file 5 

Käsitellään tiedoston sisältöä suoraan STDIN: n kautta.

$ grep 5 < <(cat file) 5 

Täällä minä ”m osoittaa, että file -sisältö voidaan ohjata osoitteeseen grep yllä olevan STDIN: n kautta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *