Perché a volte grep mostra il nome del file, a volte no?


8

Qualcuno può spiegarmi perché non ottengo il percorso completo nell'esempio 1?

esempio 1 - restituzione della riga trovata

grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY

esempio 2 - ritorno del percorso completo

grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;

Ho trovato una soluzione, ma voglio capire cosa sta succedendo qui. 1 comando, esito / gestione diversi.


1
ho già trovato l'opzione da usare: -H -H è l'impostazione predefinita quando si esegue il grepping su più file. Nel caso di agrep su 1 file (come nel caso dell'esempio 1) il -H non è in atto.
Marco,

Risposte:


13

Nel tuo primo esempio, il glob deve essere espanso in un singolo file. In tal caso, grepnon (per impostazione predefinita) non anteporre il nome del file.

Il secondo esempio deve essere stato espanso in più nomi di file e grepin questo caso anteporre il nome file.

È possibile utilizzare l' -Hopzione per ottenere sempre il nome file anteposto all'output o -hper non ottenerlo mai.

Se al tuo grep mancano queste opzioni, puoi usare grep REGEX /path/to/pattern/* /dev/nullper ottenere sempre il nome del file (non c'è mai successo, /dev/nullma conta come un nome di file) o cat /path/to/pattern/* | grep REGEXper non ottenere mai un nome file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.