У меня есть большой каталог файлов, в котором мне нужно просмотреть определенные строки, потому что их нужно обновить.
Формат, который я ищу, всегда начинается с <topicref, а затем должен иметь href="../, но после него будет текст. Например: href="../example.md". После этого он может иметь scope="peer", некоторые другие строки и заканчиваться либо >, либо />.
На данный момент я придумал регулярное выражение, адрес которого находит нужные мне строки:
pcregrep -HnM '<topicref(.*) href="..\/(.*).dita(.*)[^>]*'
Однако у меня возникают проблемы с фильтрацией результатов, имеющих scope="peer". Я пытался сделать
pcregrep -HnM '<topicref(.*) href="..\/(.*).dita(.*)[^>]*' directory | pcregrep - Mv 'scope="peer" > file
Но результаты этого будут строго отображать все строки, в которых нет 'scope="peer"', из общего результата предыдущего pcregrep, поэтому будут случайные результаты, которые не должны быть включены, а также я не могу отследить, из каких файлов эти результаты.
Можно ли увидеть все упоминания <topicref href="../... >
без scope="peer"
?
Три примера строк с scope="peer":
<topicref href="../cat.md" scope="peer"
something />
<topicref href="../cat.md"
something scope="peer"
something />
<topicref href="../cat.md"
scope="peer"
something></topicref><map>
Я думаю, вам нужен "отрицательный обзор"... caspar.bgsu.edu/~courses/Stats/Labs/Handouts/grepadvanced.htm