我需要使用bash的行尾的数字重复以下文字:
test1, red, 1
test2, green, 2
test3, white, 3
这需要给出以下结果
test1, red
test2, green
test2, green
test3, white
test3, white
test3, white
如果需要,请解释步骤。
答案 0 :(得分:2)
while IFS=, read -r p1 p2 p3;
do
for((i=1;i<=$p3;i++));
do
echo $p1,$p2;
done ;
done<inputfile
输出:
test1, red
test2, green
test2, green
test3, white
test3, white
test3, white
说明:
这会打破用逗号分隔的每一行。完成后,检查第三列,并按照第3列的值重复它。
下行:如果列数已更改,则此方法不够灵活。您可能希望使用awk
及其最后一列值$NF
来迭代循环。
答案 1 :(得分:2)
你可以做这样的事情:
$ awk 'BEGIN{FS=OFS=", "}{for(i=1;i<=$NF;i++)print $1,$2}' file
test1, red
test2, green
test2, green
test3, white
test3, white
test3, white