Извлечение тройная обратная галочка оградило блок кода' '' выборки из файла скидки с цены

Каждая строка является независимой записью. Вы можете grep их для фильтрации, sed -i~ /pattern/d authorized_keys для удаления строк скажите все строки с некоторого сервера, или cat new-entries >> authorized_keys добавить строки в конец.

5
15.08.2018, 12:38
4 ответа
sed -n '/^```/,/^```/ p' < input.file

Распечатает все строки между', '' но включая' '' строки также. Избавиться от этого:

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

Можно найти объяснение того, как использовать диапазоны строки шаблоном, и 'p' и команды 'd', запускающиеся здесь:

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

7
27.01.2020, 20:34

Можно также использовать perl:

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

Объяснение

  • 0777 часть устанавливает входной разделитель записей ($/) хлебать целый файл
  • regex ищет строку, запускающуюся с 3 или больше обратных галочек, затем соответствует и получает как можно меньше строк (гарантируемый ленивым квантором *?) сопровождаемый строкой, запускающейся с 3 или больше галочек.
  • regex модификатор m гарантирует это ^ соответствовал бы началу строк не только запуск файла. Модификатор s удостоверяется это . будет соответствовать символу новой строки так, чтобы .*? может соответствовать нескольким строкам. Наконец g удостоверяется, что regex будет применен многократно к содержанию файла так, чтобы все соответствия были найдены.
2
27.01.2020, 20:34

Вы можете использовать сам pandoc для извлечения кода из всех блоков кода. (Эти инструкции относятся к версии pandoc >= 2.0. Никакое другое программное обеспечение не требуется; pandoc включает интерпретатор lua. ).

Создать файл extractcode.luaс содержимым:

function CodeBlock(el)
    print(el.text)
end

Теперь запустите pandoc следующим образом, где myfile.md— ваш файл уценки:

pandoc --lua-filter extractcode.lua myfile.md -o /dev/null

Будет напечатано содержимое всех кодовых блоков. Обратите внимание, что это будет включать все кодовые блоки в myfile.md, включая кодовые блоки с отступом. В отличие от решений sed, предложенных в других ответах, оно также будет включать блоки кода, которые встречаются в контекстах с отступом, таких как элементы списка или цитаты :

.
1.  ```lua
    a = 5
    ````

> ```
> my code
> ```

И его не запутают подобные вещи, когда обратные кавычки являются частью блока кода, а не разделителями:

````
```
code example with three backticks as part of the code block
```
````
2
27.01.2020, 20:34

ПРИМЕЧАНИЕ.:Я являюсь основным разработчиком и сопровождающим rundoc.


Для тех, кто ищет инструмент общего назначения для таких задач:

Rundoc — инструмент общего назначения для запуска или извлечения изолированных блоков кода из файлов уценки. Вы можете установить его через pip для python3 :pip3 install rundoc.

Извлечение кодовых блоков:

rundoc list-blocks your_file.md -t#bash#perl#python

будет извлекать блоки кода с выделенным тегом bash, perlили python. К сожалению, блоки кода без выделения тегов всегда игнорируются.

Вы также можете запустить файл уценки как скрипт с помощью

rundoc run your_file.md -t#bash#perl#python

Это приведет к выполнению всех блоков кода с соответствующим тегом выделения и использованию тега выделения для поиска подходящего интерпретатора.

ПРИМЕЧАНИЕ.:Чтобы получить чистый код без JSON или заголовков, используйте инструмент jq:

rundoc list-blocks your_file.md | jq -r "(.code_blocks[] | {code}).code"
4
27.01.2020, 20:34

Теги

Похожие вопросы