shell如何使用行尾

时间:2016-11-07 10:25:12

标签: linux bash shell

我需要使用bash的行尾的数字重复以下文字:

test1, red, 1
test2, green, 2
test3, white, 3

这需要给出以下结果

test1, red
test2, green
test2, green
test3, white
test3, white
test3, white

如果需要,请解释步骤。

2 个答案:

答案 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