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


18

Следующий grep

grep -r -e -n coll *

будет отображать

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

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

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

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

1
Я вижу номера строк при использовании -nопции. Можете ли вы опубликовать вывод того, что вы получаете?
Крис Харпер

Ответы:


18

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


15

нет необходимости для -r & -e!

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

grep -n "pattern" file.txt

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

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
Чтобы получить только номер строки, его проще использовать cut, напримерcut -f1 -d:
wjandrea

1

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

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

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

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

где

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

Чтобы получить только номер строки, его проще использовать, cutчем Awk, напримерcut -f1 -d:
wjandrea

@wjandrea Легче, чем?
Шелджон

Я имею в виду синтаксис проще
wjandrea

@wjandrea Это звучит очень объективно.
Шелджон

@wjandrea Извините за сарказм, я отредактировал, чтобы включить ваше предложение :)
Sheljohn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.