Как я могу вставить новую строку в текстовый файл через каждые две другие строки?

Начиная с этого,

example.txt

      1.qwer
2.asdf
3.xzcv
4.cbvn
5.erty

Идя к этому,

apendedtext.txt

      1.append
2.qwer
3.asdf
4.append
5.xzcv
6.cbvn
7.append

2 ответа

Предполагая, что вы добавили номера строк для простоты и что в выводе отсутствует 8-я строка "erty", вы можете обойтись простым однострочным awk:

      #                                     ┌─ input      ┌─ output
awk 'NR % 2 {print "append"} {print}' < example.txt > apendedtext.txt
#     │                      └─ Print the original line
#     └─ Append if line has even index          

Если вы хотите также манипулировать номерами строк, вы можете удалить и добавить их обратно:

      ( sed -E 's/[0-9]*\.//g'| awk 'NR % 2 {print (++i) "." "append"} {print (++i) "." $0}' ) < example.txt > apendedtext.txt
#           └─ Remove line number               └─   Prepend a counter  ─┘                  

awk '{print;} NR% 2 == 0 {print "append"; }'example.txt> appended.txt

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