根据行号操作修改文本内容

根据行号操作修改文本内容

假设我在文本文件中有这些数据:

line1 
line2 
line3
line4
line5
...

我想根据使用行号的模式更改此文本文件,例如行号 mod 3,行内容:

1,line1
2,line2
3,line3
1,line4
2,line5
...

我怎样才能实现这个(最好使用 sed)?

答案1

由于缺乏算术,因此很难做到这一点sed。但是,有几种方法可以做到这一点awk

awk '{ printf "%d, %s\n", (linenum++ % 3) + 1, $0 }' lines.txt

或者

awk '{ print (linenum++ % 3) + 1 ", " $0 }' lines.txt

在这两种情况下,linenum都用于计算行数,然后使用模运算来计算行数除以 3 的余数。将其1相加即可得到您请求的编号方案。

printf给程序提供了一些“视觉享受”。

请参阅man awk以了解详细信息和其他选项。

相关内容