Як отримати номер рядка від grep?


19

Наступний греп

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 *


16

не потрібно -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для regexp);
  • <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.