erre a bejegyzésre bukkantam, amely megmagyarázza a problémámat. Tegyük fel, hogy létezik egy file.txt nevű fájl, amely a “foo World” -et tartalmazza.
A Tyler által feltett válasz sokat megmagyaráz, azonban zavarban vagyok, hogy

cat file.txt | grep "foo" 

hasonló a

grep "foo" file.txt 

Úgy gondoltam, hogy grep következő

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

Most az cat file.txt kimenete a fájl tartalma, amely foo World ez lesz a grep bemenete? Igazam van? Ha igen, úgy gondoltam, hogy grep fájlfájlra van szükség stringként?

Megjegyzések

  • A grep(1) man oldal (írja be a man grep típust), a „grep [options] PATTERN [FILE …]” üzenet jelenik meg. Az a tény, hogy a „FÁJL” után „…” következik, azt jelenti, hogy több fájl argumentum is lehet; az a tény, hogy szögletes zárójelben van ([]) azt jelenti, hogy a fájl argumentum opcionális (azaz nincs hogy bármilyen legyen). Olvassa tovább, és megjelenik a „ Grep keresés a megnevezett bemeneti FÁJLOKBAN (vagy a standard bemenetben, ha nincs fájl megnevezve, vagy a fájlnév - van megadva). Tehát: ha nincs megadva fájl, a grep a szokásos bemeneten keres.

Válasz

A legtöbb parancs foglalkozni tud vagy beírja azt a fájlt, amelyet meg kell nyitnia a bevitelhez, vagy olyan adatfolyamként, amelyet az STDIN-en keresztül továbbított a parancsnak.

Amikor az cat file.txt egy csövön keresztül küldi el egy másik parancsnak (|) a kimenetet az STDOUT-on keresztül, amelyet a bal oldalon lévő csőhöz továbbítottak, beállítják és betáplálják a parancsba, “a cső jobb oldalán található” s STDIN.

Ha a tartalmat nem továbbítjuk az STDOUT -> STDIN-en keresztül egy csövön keresztül, akkor a parancsok adatokat fogadhatnak azáltal, hogy megnyitják azokat a fájlokat, amelyeket névvel továbbítanak a parancssori argumentumok.

Példák

Kimenetet küld az STDOUT-nak.

$ cat file 1 2 3 4 5 

Kimenet az STDOUT-on keresztül a csövön keresztül a grep” s STDIN címre kerül elküldésre.

$ cat file | grep 5 5 

A fájl feldolgozása parancssori argumentumként.

$ grep 5 file 5 

A fájl tartalmának közvetlen feldolgozása az STDIN-en keresztül.

$ grep 5 < <(cat file) 5 

Itt vagyok “m annak bemutatása, hogy az file tartalma a fenti STDIN-en keresztül irányítható a grep címre.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük