我有一个有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