Может кто-нибудь объяснить мне, почему я не понимаю полный путь в примере 1?
пример 1 - возврат найденной строки
grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY
пример 2 - возврат полного пути
grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;
Я нашел решение, но хочу понять, что здесь происходит. 1 команда, другой результат / обработка.
Ответы:
В первом примере глобус должен быть расширен до одного файла. В этом случае
grep
не (по умолчанию) не добавляется имя файла.Во втором примере должно быть расширено до нескольких имен файлов, и
grep
в этом случае предшествует имя файла.Вы можете использовать
-H
опцию, чтобы всегда получать имя файла, добавленное к выводу, или-h
никогда не получать его.Если у вашего grep нет этих опций, вы можете использовать его,
grep REGEX /path/to/pattern/* /dev/null
чтобы всегда получать имя файла (в него никогда не попадало,/dev/null
но оно считается как имя файла), илиcat /path/to/pattern/* | grep REGEX
чтобы никогда не получить имя файла.источник