Список файлов имя файла и номер строки


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

ex:

  grep -ln "search" *

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

3 62

3 ответа:

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

grep -Hn "search" *

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

grep -nHo "search" * 
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

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

grep -niro 'searchstring' <path>

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