#awk #yaml #text-processing
#авк #yaml #обработка текста
Вопрос:
Я хочу использовать AWK для извлечения блока YAML с разделителями ‘—‘ из файла, подобного следующему:
---
title: "This is a title"
sourceEditionDate: 1927-01-01
languages:
- "latin"
tags:
- poetry
---
Some other text I do not want to extract
со следующим результатом:
title: "This is a title"
sourceEditionDate: 1927-01-01
languages:
- "latin"
tags:
- poetry
До сих пор я пробовал этот подход
awk '/---/{p=0};p;/---/{p=1}' file
но я все равно получаю весь файл, включая нежелательную последнюю строку.
Комментарии:
1. Хотели бы вы использовать синтаксический анализатор YAML, подобный
yq
этому? — github.com/mikefarah/yq2. Вы не можете получить выходные данные, которые вы опубликовали, из введенных вами данных, если вы не хотите добавить
- "german"
и- "danish"
из скрипта.3. Извините, я забыл их удалить. И спасибо за ответ — именно то, что я искал.
Ответ №1:
$ awk '/---/{f=!f; next} f' file
title: "This is a title"
sourceEditionDate: 1927-01-01
languages:
- "latin"
tags:
- poetry
Ответ №2:
А также с awk
вами можно получить тот же результат:
awk '!/---/' file
title: "This is a title"
sourceEditionDate: 1927-01-01
languages:
- "latin"
tags:
- poetry