在第一列和第二列之间添加一个新列,其值是从 1 到 5 的数字,根据需要重复以达到总行数

Add a new column between the first and second columns with values that are numbers from 1 to 5, repeated as needed to reach total line number

我有一个包含 2 列的 txt 文件,我想在两列之间添加一个新列,其值范围为 1 到 5,并根据需要重复多次以使行与其他列相同.我正在尝试使用 AWK,但我愿意接受其他建议

示例输入

A 100
A 200
A 300
A 400
A 500
B 1000
B 2000
B 3000
B 4000
B 5000

示例输出

A 1 100
A 2 200
A 3 300
A 4 400
A 5 500
B 1 1000
B 2 2000
B 3 3000
B 4 4000
B 5 5000

现在我正在尝试

awk 'BEGIN{FS=OFS="\t"}{for (i = 1; i <= 5; ++i)  =++i OFS }1' $my_data

但显然是行不通的。

带模运算符%:

awk '{print , (NR-1)%5+1, }' file

输出:

A 1 100
A 2 200
A 3 300
A 4 400
A 5 500
B 1 1000
B 2 2000
B 3 3000
B 4 4000
B 5 5000

参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

更简单的awk:

awk '{print , ++cnt[], }' file

A 1 100
A 2 200
A 3 300
A 4 400
A 5 500
B 1 1000
B 2 2000
B 3 3000
B 4 4000
B 5 5000
awk '{print ,a[]+=1,}' file