Grep без указания пути/файла: строка

Как вы grep и возвращаете только подходящую строку? т.е. путь/имя файла опущены из результатов.

В этом случае я хочу посмотреть все .bar файлы в текущем каталоге, ища термин FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;

Ответ 1

Не надо find. Если вы просто ищете шаблон в определенном каталоге, этого должно быть достаточно:

grep -hn FOO /your/path/*.bar

Где -h - это параметр, чтобы скрыть имя файла, как в man grep:

-h, --no-filename

Подавить префикс имен файлов на выходе. Это значение по умолчанию, когда для поиска требуется только один файл (или только стандартный ввод).

Обратите внимание, что вы использовали

-h, --with-filename

Напечатайте имя файла для каждого совпадения. Это значение по умолчанию, когда для поиска требуется более одного файла.

Ответ 2

Просто замените -H на -H. Проверьте man grep для более подробной информации о параметрах

find . -name '*.bar' -exec grep -hn FOO {} \;

Ответ 3

Со страницы руководства:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.

Ответ 4

Я думаю, что -hn не будет работать в некоторых случаях один. Если у вас есть длинные пути и длинные имена файлов и много файлов для поиска. Некоторые результаты могут иметь несколько признаков конца имени файла и заканчиваться двоеточием, а затем результатом.

Это может выглядеть как

1: что-то

10: Somthing

Я искал этот ответ, но ни один из ответов здесь не является достаточным. Мне нужно иметь возможность вырезать некоторые результаты из файлов, которые похожи и позиции всегда на одном месте. Если я сделаю это таким образом, я получу результат, который выглядит как grep -hn что-то $ HOME/что-то/* | cut -c 10-15 >> somthing.txt

reulsts:

вещь

ethin

но желаемый результат был то есть "вещь". И проблема не в срезе, у меня есть строки, которые могут быть длиннее.

Пожалуйста, если мой вопрос не в том месте, пожалуйста, переместите его и сотрудничайте, и я попытался добавить комментарий, но моя репутация недостаточно высока. Я не могу дать какие-либо подробности о том, что я делаю, потому что это конфиденциальная информация.