Каждая строка является независимой записью. Вы можете grep их для фильтрации, sed -i~ /pattern/d authorized_keys
для удаления строк скажите все строки с некоторого сервера, или cat new-entries >> authorized_keys
добавить строки в конец.
sed -n '/^```/,/^```/ p' < input.file
Распечатает все строки между', '' но включая' '' строки также. Избавиться от этого:
sed -n '/^```/,/^```/ p' < input.file | sed '/^```/ d'
Можно найти объяснение того, как использовать диапазоны строки шаблоном, и 'p' и команды 'd', запускающиеся здесь:
Можно также использовать perl
:
perl -0777e '$_=<>;print $1 while /^`{3,}\s*\n(.*?)^`{3,}\s*\n/msg' your_file
Объяснение
0777
часть устанавливает входной разделитель записей ($/
) хлебать целый файл*?
) сопровождаемый строкой, запускающейся с 3 или больше галочек.m
гарантирует это ^
соответствовал бы началу строк не только запуск файла. Модификатор s
удостоверяется это .
будет соответствовать символу новой строки так, чтобы .*?
может соответствовать нескольким строкам. Наконец g
удостоверяется, что regex будет применен многократно к содержанию файла так, чтобы все соответствия были найдены.Вы можете использовать сам 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
```
````
ПРИМЕЧАНИЕ.:Я являюсь основным разработчиком и сопровождающим 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"