Подтвердить что ты не робот

Показать имя файла и номер строки в выводе grep

Я пытаюсь найти в моей директории rails, используя grep. Я ищу конкретное слово и хочу grep распечатать имя файла и номер строки.

Есть ли флаг grep, который сделает это для меня? Я пытался использовать комбинацию -n и -l но это либо распечатка имен файлов без номеров, либо просто вывод большого количества текста на терминал, который не может быть легко прочитан.

например:

  grep -ln "search" *

Мне нужно передать это в awk?

4b9b3361

Ответ 1

Я думаю, что -l слишком ограничительный, поскольку он подавляет вывод -n. Я бы предложил -H (--with-filename): напечатать имя файла для каждого соответствия.

grep -Hn "search" *

Если это дает слишком большой результат, попробуйте -o напечатать только ту часть, которая соответствует.

grep -nHo "search" * 

Ответ 2

grep -rin searchstring * | cut -d: -f1-2

Это будет searchstring поиск рекурсивно (для строки searchstring в этом примере), игнорирование регистра и отображение номеров строк. Вывод этого grep будет выглядеть примерно так:

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

Затем мы передаем этот результат команде cut, используя двоеточие : качестве разделителя полей и отображая поля с 1 по 2.

Когда мне не нужны номера строк, я часто использую -f1 (только имя файла и путь), а затем направляю вывод в uniq, так что я вижу каждое имя файла только один раз:

grep -ir searchstring * | cut -d: -f1 | uniq

Ответ 3

Мне нравится использовать:

grep -niro 'searchstring' <path>

Но это только потому, что я всегда забываю другие способы, и по какой-то причине я не могу забыть Robert de grep - niro:)