1

У меня длинный латексный документ со многими разделами. Я хотел бы убедиться, что все разделы документа заполнены. Поэтому я ищу в любое время, когда есть '}', заканчивающийся заголовком раздела, пробел, а затем '\', начинающий следующий раздел (Это далеко не идеальный поиск, но я в порядке).

В VIM я использую

/}\_s\\ 

Который работает отлично. Тем не менее, я пытаюсь повторить поиск в командной строке.

Я бы обычно использовал grep, но это многострочное совпадение, так что нет. У меня мало опыта с sed, но я пробовал это:

sed -e '/\}\s\\/p' file.tex

и это дает мне все (предположительно, потому что это печать многострочного текста, который соответствует - весь файл)

Как я могу улучшить эту команду sed, чтобы дать мне только, скажем, первую строчку матча?

1 ответ1

2

sed , как и grep , обрабатывает файл построчно. Более того, он печатает все, если вы не укажете опцию -n (или не используете команду d ).

Вы можете попробовать Perl:

perl -0777 -ne 'print $1 while /(\}\s*\\)/g' file.tex
  • -0777 читает весь файл, а не читает его построчно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .