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

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

```

Code is here

```

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

  • Может ли sed удалить «двойные» символы новой строки?
  • удалить строки файла из файла
  • Как выбрать 30 файлов и сделать кучу sed команд на них
  • Расшифровка команд sed
  • Sed - заменить символ в соответствующей строке на месте?
  • Используя sed (?), Чтобы извлечь один экземпляр строки, которая повторяется в исходной строке
  • sed - почему это не работает?
  • 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 - лучшая ОС в мире.