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

  • 本文关键字:数字 之间 添加 二列 一列 一个 新列 awk
  • 更新时间 :
  • 英文 :


我有一个有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) $2 =++i OFS $2}1' $my_data

但显然是行不通的。

更简单的awk:

awk '{print $1, ++cnt[$1], $2}' 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 $1, (NR-1)%5+1, $2}' file

输出:

A 1 100A 2 200A 3300a4400a5500B 1 1000b22000b33000B 4 4000B 5 5000

参见:8个强大的Awk内置变量- FS, OFS, RS, ORS,NR, NF, FILENAME, FNR

awk '{print $1,a[$1]+=1,$2}' file

最新更新