如何在BASH中的文档中向下移动标记的行?

时间:2019-06-30 04:31:55

标签: bash line

我有一个这样标记的文档,带有“ 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 个答案:

答案 0 :(得分:1)

sed '2,$s/^q /\n\n\n\n\n\nq /'

sed的作用:对于第二行(2)和文件结尾(,$)之间的每一行,如果一行以q开头({{ 1}}),用5个换行符和一个s/^qq)替换单个q