Как сместить отмеченные строки вниз в документе в BASH? - PullRequest
0 голосов
/ 30 июня 2019

У меня есть документ, помеченный как этот, с "q", отмечающим начало группы текста:

q What animals live in the forest?
Rabbits.
Fish and crocodiles.
Bears and llamas.
q What animals live in the desert?
Cats.
Rhinos and deer.
q What animals live in the sky?
Flying fish.
Birds and eagles.

Мне нужно добавить несколько пробелов между ними, чтобы все смещалось вниз. Первая строка, начинающаяся с «q», отправляется в 10-ю строку, вторая строка, начинающаяся с «q», в 20-ю строку, а третья - в 30-ю строку и т. Д. Остальные строки просто сдвигаются вниз, но остаются с их группа текста. Это трудно сделать вручную, поскольку у меня много таких записей во многих таких форматированных файлах.

Пример вывода:

q What animals live in the forest?
Rabbits.
Fish and crocodiles.
Bears and llamas.





q What animals live in the desert?
Cats.
Rhinos and deer.






q What animals live in the sky?
Flying fish.
Birds and eagles.

Есть ли решение, использующее инструменты BASH для достижения этой цели?

1 Ответ

1 голос
/ 30 июня 2019
sed '2,$s/^q /\n\n\n\n\n\nq /'

Что делает sed: Для каждой строки между второй строкой (2) и концом файла (,$), если строка начинается с q (s/^q), подставьте один q с 5 символами новой строки и q (/\n\n\n\n\n\nq/).

...