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

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

```

Code is here

```

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

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 убедитесь, что регулярное выражение будет применено итеративно к содержимому файла, чтобы все совпадения были найдены.
  • (In) формальные (и более доступные для поиска) мнемоники для стандартных команд `sed`?
  • Как выбрать 30 файлов и сделать кучу sed команд на них
  • Как запустить команду только в том случае, если sed заменяет строки
  • sed удалить строки httpd.conf
  • Использование sed в perl?
  • Скопируйте шаблон соответствия линии рядом с другой соответствующей строкой шаблона, используя sed
  • Чистая замена всех вхождений двух строк с помощью sed
  • Может ли sed заменить новые символы линии?
  • группы захвата sed не работают
  • sed - как правильно использовать границу слова \ b?
  • sed, найти и разместить после и до
  • Linux и Unix - лучшая ОС в мире.