Извлечь тройной обратный код, огороженный кодовым блоком “ `выдержки из файла уценки

У меня есть файл pandoc markdown, в котором много кода. Я хочу извлечь все биты кода из файла, предпочтительно используя sed . Синтаксис кода в pandoc – это три или более символа для запуска и завершения сегмента кода.

```

Code is here

```

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

  • Что не так с экранированной новой строкой в ​​этой команде sed?
  • Вопрос о нескольких командах sed
  • sed - как правильно использовать границу слова \ b?
  • Как заменить кавычки в файле с помощью sed?
  • sed удалить все после строки?
  • Sed линия перемещения от n ° 40 до 39 позиция
  • Удалить конечные запятые в строке
  • sed, получив ошибку: sed -e выражение # 1, команда char 28: unterminated `s '
  • 2 Solutions collect form web for “Извлечь тройной обратный код, огороженный кодовым блоком “ `выдержки из файла уценки”

     sed -n '/^```/,/^```/ p' < input.file 

    Будут напечатаны все строки между “ `, но включая строки` “. Чтобы избавиться от этого:

     sed -n '/^```/,/^```/ p' < input.file | sed '/^```/ d' 

    Вы можете найти объяснение того, как использовать линейные диапазоны по шаблону, а также команды «p» и «d»:

    http://www.grymoire.com/Unix/Sed.html#uh-29

    Вы также можете использовать perl :

     perl -0777e '$_=<>;print $1 while /^`{3,}\s*\n(.*?)^`{3,}\s*\n/msg' your_file 

    объяснение

    • Часть 0777 устанавливает разделитель входных данных ( $/ ), чтобы разделить весь файл
    • Регулярное выражение ищет строку, начинающуюся с 3 или более обратных ссылок, затем сопоставляет и фиксирует как можно меньше строк (гарантируется ленивым квантором *? ), За которым следует строка, начинающаяся с 3 или более тиков.
    • Модификатор regex m гарантирует, что ^ будет соответствовать началу строк, а не только началу файла. Модификатор s гарантирует это . будет соответствовать символу новой строки, чтобы .*? может соответствовать нескольким строкам. Наконец, g убедитесь, что регулярное выражение будет применено итеративно к содержимому файла, чтобы все совпадения были найдены.
    Linux и Unix - лучшая ОС в мире.