Mengapa terkadang grep menunjukkan nama file, terkadang tidak?


8

Dapatkah seseorang tolong jelaskan kepada saya mengapa saya tidak mendapatkan path lengkap dalam contoh 1?

contoh 1 - mengembalikan garis yang ditemukan

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

contoh 2 - mengembalikan path lengkap

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

Saya telah menemukan solusi, tetapi saya ingin memahami apa yang terjadi di sini. 1 perintah, hasil / penanganan yang berbeda.


1
sudah menemukan opsi untuk digunakan: -H -H adalah default ketika menangkap beberapa file. Dalam kasus agrep pada 1 file (yang merupakan kasus dengan contoh 1) -H tidak ada di tempat.
Marco

Jawaban:


13

Dalam contoh pertama Anda, glob harus diperluas ke satu file. Dalam hal ini, grepjangan (secara default) menambahkan nama file.

Contoh kedua harus diperluas ke beberapa nama file, dan grepmenambahkan nama file dalam kasus itu.

Anda dapat menggunakan -Hopsi untuk selalu mendapatkan nama file yang diawali dengan output, atau -huntuk tidak pernah mendapatkannya.

Jika grep Anda tidak memiliki opsi ini, Anda dapat menggunakan grep REGEX /path/to/pattern/* /dev/nulluntuk selalu mendapatkan nama file (tidak pernah ada hit /dev/nulltetapi itu dianggap sebagai nama file), atau cat /path/to/pattern/* | grep REGEXuntuk tidak pernah mendapatkan nama file.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.