Как найти шаблон в нескольких файлах, исключая закомментированные строки - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть куча файлов LaTeX, которые я хочу найти, используя grep pattern *.tex -n --color=always.Важно, чтобы я увидел:

  1. Имя файла, которое соответствует
  2. Номер строки совпадения
  3. Полная строка с выделенным шаблоном

Кроме того, иногда шаблон должен соответствовать полному слову, поэтому команда становится grep pattern *.tex -n -w --color=always

Я хотел бы изменить эту команду, чтобы исключить закомментированные строки в моих файлах *.tex,которые начинаются с символа %.Меня не интересуют совпадения в комментариях.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Будет ли это делать?Сначала некоторые тестовые материалы:

$ cat file
yes
no % yes commented out
yes % yes before comment
no
noyes
furthermore yes
furthermore yes% yes
furthermore no% yes

grep:

$ grep -Hn "^[^%]*\(^\| \)yes\( \|$\|%\)" file
file:1:yes
file:3:yes % yes before comment
file:6:furthermore yes
file:7:furthermore yes% yes

Редактировать : Для частичных совпадений:

$ grep -Hn "^[^%]*yes" file 

и выделитьтолько слово поиска, которое вам нужно, чтобы найти его снова:

$ grep -Hn "^[^%]*yes" file | grep yes
file:1:yes
file:3:yes % yes before comment
file:5:noyes
file:6:furthermore yes
file:7:furthermore yes% yes
0 голосов
/ 05 февраля 2019

Может быть, вы можете попробовать следующую команду:

grep -n -v --color=always '^%' *.tex | grep content

ОБЪЯСНЕНИЕ

  • Первый вызов grep исключает (-v) строку, начинающуюся с % (регулярное выражение ^% соответствует % в начале строки (^))
  • Выход первого вызова grep передается как вход для второго grep вызова
  • Второй grep вызов включает в себя только те строки, которые соответствуют вашему шаблону фильтра (вы можете добавить опцию -w, если вам это нужно).

Надеюсь, это может вам помочь!

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