Показать имя файла и номер строки в выводе grep - PullRequest
76 голосов
/ 12 ноября 2011

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

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

например:

  grep -ln "search" *

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

Ответы [ 3 ]

120 голосов
/ 12 ноября 2011

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

grep -Hn "search" *

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

grep -nHo "search" * 
29 голосов
/ 19 июля 2012
grep -rin searchstring * | cut -d: -f1-2

Это будет означать рекурсивный поиск (для строки 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
11 голосов
/ 26 октября 2016

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

grep -niro 'searchstring' <path>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...