根据数值插入行

时间:2014-08-10 13:08:46

标签: bash file text lines

如何使用bash和脚本工具来转发此文件:

apples 2  
oranges 3  
bananas 1  
pears 2  

到这个文件:

apples  
apples  
oranges  
oranges   
oranges  
bananas  
pears  
pears  

我尝试了一些没有成功的awk

2 个答案:

答案 0 :(得分:4)

这样可行:

awk '{ for (i=0; i<$2; ++i) print $1 }' file

使用第二列中的值来确定for循环中的迭代次数。多次打印第一列。

输出:

apples
apples
oranges
oranges
oranges
bananas
pears
pears

或者也许是一点Perl:

perl -ane 'print "$F[0]\n" x $F[1]' file

使用-a将每一行拆分为列,并将第一列(+换行符)打印为第二列的值。

答案 1 :(得分:2)

你甚至可以用纯粹的bash来做:

#!/bin/bash
while read -r fruit count; do
    for ((i = 0; i < count; i++)); do
        echo "$fruit"
    done
done