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.
Jawaban:
Dalam contoh pertama Anda, glob harus diperluas ke satu file. Dalam hal ini,
grep
jangan (secara default) menambahkan nama file.Contoh kedua harus diperluas ke beberapa nama file, dan
grep
menambahkan nama file dalam kasus itu.Anda dapat menggunakan
-H
opsi untuk selalu mendapatkan nama file yang diawali dengan output, atau-h
untuk tidak pernah mendapatkannya.Jika grep Anda tidak memiliki opsi ini, Anda dapat menggunakan
grep REGEX /path/to/pattern/* /dev/null
untuk selalu mendapatkan nama file (tidak pernah ada hit/dev/null
tetapi itu dianggap sebagai nama file), ataucat /path/to/pattern/* | grep REGEX
untuk tidak pernah mendapatkan nama file.sumber