Как получить номер строки из grep?

Следующий grep

grep -r -e -n coll *

отобразит

fullpath/filename:  <tag-name>coll</tag-name>

Я хотел бы знать, какая строка имеет следующий текст, я попытался добавить -n, но это не сработало , Я попытался добавить | grep -n *, но это сделало что-то странное.

То, что я хотел бы видеть (меня не волнует формат), это

fullpath/filename:10:  <tag-name>coll</tag-name>
12

3 ответа

Вы должны поставить -e в конце списка опций: grep -rne coll *

0
ответ дан 24.04.2019, 09:28

нет необходимости в -r & amp; -e!

получить номер строки шаблона!

grep -n "pattern" file.txt

, если вы хотите получить только номер строки в качестве вывода, добавьте к нему еще одну команду grep!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'
0
ответ дан 24.04.2019, 09:28
  • 1
    Получить просто номер строки, it' s легче использовать cut, например, cut -f1 -d: – StingyJack 28.07.2018, 05:21

Чтобы найти шаблон в определенном файле и получить соответствующие строки:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

или используя cut, как предложено @wjandrea:

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

где [1114 ]

  • <Pattern> - шаблон глобуса в кавычках (используйте параметр -E для регулярных выражений);
  • <File> - интересующий вас файл;
  • первый pipe awk ... фильтрует номера строк в выходных данных grep (перед : в каждой строке);
  • второй канал гарантирует, что номера строк появляются только один раз.
0
ответ дан 24.04.2019, 09:28

Теги

Похожие вопросы