假设我在文本文件中有这些数据:
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
以了解详细信息和其他选项。