пытается разобрать несколько шаблонов из одной команды (используя sed) - PullRequest
2 голосов
/ 22 марта 2019

У меня есть несколько файлов (уценка), которые используются для создания различных артефактов.Для одного из артефактов мне нужно проанализировать строки, начинающиеся с # AND, и строки между шаблоном (::: notes -> :: :).

файл примера

# Blah 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. 

- one 
- two 
- three 

<!-- 
::: notes 

- one is yadda yadda 
- two is yadda yadda yadda 
- three is wrong 

:::
--> 

## derp derp 

Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

# woo hoo! 

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

<!-- 
::: notes 

Aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

::: 
--> 

Я могу использовать sed, чтобы найти все # для меня

sed -n '/#/p' FILENAME.md

производит вывод:

# Blah 
## derp derp 
# woo hoo! 

и я могу использовать sed, чтобы правильно найти и выплюнуть заметки

sed -n '/::: notes/, /:::/p' FILENAME.md 

производит вывод:

::: notes 

- one is yadda yadda 
- two is yadda yadda yadda 
- three is wrong 

:::
::: notes

Aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

::: 

Но что мне действительно нужно, так это вывод в правильном порядке (в том же порядкеэто появляется в файле) как:

# Blah
::: notes 

- one is yadda yadda 
- two is yadda yadda yadda 
- three is wrong 

:::
## derp derp 
# woo hoo!
::: notes 

Aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

::: 

Любой удобный сед Гуру?Заранее спасибо!!

1 Ответ

2 голосов
/ 23 марта 2019

Несколько шаблонов поиска можно указать следующим образом:

sed -e 'command' -e 'command' filename

Таким образом, ваше решение будет выглядеть так:

sed -n -e '/::: notes/, /:::/p' -e '/#/p' FILENAME.md
...