我想复制键名x次,并有一个单独的列来指示复制次数,例如,假设我有三个键名,如下所示:
101
102
103
因此,我希望上述每个数字(名称)复制 3 次,并有一个等于 4 个字符的单独标识符号。因此,它看起来像这样:
101 0001
101 0002
101 0003
102 0001
102 0002
102 0003
103 0001
103 0002
103 0003
我想这可以用一个相对直接的 awk 脚本来生成吗? *编辑:我不想指定要在脚本中复制的名称 - 它应该是"复制此文本文件中的所有名称",因为其中有很多(~400)并且都具有变量名称类型。
提前谢谢你!
in bash
echo {101,102,103}" "{01,02,03}
101 01 101 02 101 03 102 01 102 02 102 03 103 01 103 02 103 03
遵循Fedorqui对换行符的建议
printf "%sn" {101,102,103}" "{01,02,03}
101 01
101 02
101 03
102 01
102 02
102 03
103 01
103 02
103 03
使用 awk
-v
标志传递变量number
该变量是每行的重复次数,sprint
将数字格式化为带有零填充的小数点后 2 位:
awk -v number_repeats=3 '{
for(i=0; i<number_repeats; i++) {
print $0, sprintf("%02d", i+1)
}
}'
如果你不介意GNU Parallel
parallel -k 'printf "%02d %02dn"' ::: {6..12} ::: 1 2 3
06 01
06 02
06 03
07 01
07 02
07 03
08 01
08 02
08 03
09 01
09 02
09 03
10 01
10 02
10 03
11 01
11 02
11 03
12 01
12 02
12 03
或者,如果您的密钥位于文件中,则像这样称为keys
32
45
78
您可以读取文件
parallel -k 'printf "%02d %02dn" {1} {2}' :::: keys ::: 1 2 3
32 01
32 02
32 03
45 01
45 02
45 03
78 01
78 02
78 03