【问题标题】:How can I insert a new line into a text file into every other 2 lines?如何在文本文件中每隔 2 行插入一个新行?
【发布时间】:2021-11-01 09:10:25
【问题描述】:

从这里开始,

example.txt

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

到这里,

附加文本.txt

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

【问题讨论】:

  • 您的文件中还有您想要更新的行号?
  • 是的 lucaslugao 完美回答了我的问题
  • @an0nhi11 那你能接受答案吗?
  • @lucaslugao 完成谢谢。我不知道这个
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: shell unix-text-processing


【解决方案1】:

假设您为简单起见添加了行号,并且输出缺少第 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  ─┘                  

【讨论】:

  • 我喜欢你的评论风格。我可能不得不偷它!
【解决方案2】:

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

【讨论】:

  • 顺序颠倒,要打印“append”后的原行。
  • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2021-10-19
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
相关资源
最近更新 更多