Добавьте определенный текст/тег после каждых нескольких строк в ударе

У меня есть текстовый файл, где я должен добавить теги (в форме обычного текста) в .txt файл.

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

a
b
c
d
e
f
g
h

Я хочу добавить теги <hello> и </hello> прежде и после каждых 3 строк, соответственно, и заставляют его несколько походить на это:

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

Как я могу достигнуть этого?

3
задан 3 October 2019 в 19:23

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> каждая третья строка, запускающаяся в строке 1
  • 3~3a</hello> добавить </hello> каждая третья строка, запускающаяся в строке 3, но, исключая последнюю строку файла $
  • в последней строке $, добавьте закрывающий тэг независимо от номера строки

Если файл содержит точное несколько из 3 строк затем, это более просто - просто

sed -e '1~3i<hello>' -e '3~3a</hello>' a.txt
3
ответ дан 1 December 2019 в 16:15

Другие вопросы по тегам:

Похожие вопросы: