在 bash 中每隔几行添加特定的文本/标签

在 bash 中每隔几行添加特定的文本/标签

我有一个文本文件,我必须将标签(以普通文本的形式)添加到 .txt 文件。

例如,假设我有一个这样的文本文件:

a
b
c
d
e
f
g
h

我想在每 3 行之前和之后分别添加标签<hello></hello>,并使其看起来有点像这样:

<hello>
 a
 b
 c
</hello>
<hello>
 d
 e
 f
</hello>
<hello>
 g
 h
</hello>

我怎样才能实现这个目标?

答案1

以下是一种方法:

$ sed -e '1~3i<hello>' -e '3~3{$!a</hello>' -e'}' -e '$a</hello>' a.txt
<hello>
a
b
c
</hello>
<hello>
d
e
f
</hello>
<hello>
g
h
</hello>

解释:

  • 1~3i<hello><hello>从第一行开始,每三行插入一次
  • 3~3a</hello>从第 3 行开始,每三行附加一次</hello>,但不包括文件的最后一行$
  • 在最后一行$,添加结束标记,无论行号如何

如果文件包含 3 行的整数倍,那么就更简单了 - 只需

sed -e '1~3i<hello>' -e '3~3a</hello>' a.txt

相关内容