【问题标题】:Insert lines based on numeric value根据数值插入行
【发布时间】:2014-08-10 13:08:46
【问题描述】:

如何使用 bash 和脚本工具从该文件中获取:

apples 2  
oranges 3  
bananas 1  
pears 2  

到这个文件:

apples  
apples  
oranges  
oranges   
oranges  
bananas  
pears  
pears  

我尝试了一些 awk 没有成功

【问题讨论】:

  • 如果你已经尝试过一些东西,你应该把它包含在问题中

标签: bash file text lines


【解决方案1】:

这可行:

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 将每一行拆分为列,并打印第一列(+换行符)的次数与第二列的值一样多。

【讨论】:

  • Tks。喜欢 perl 的简单性。
【解决方案2】:

你甚至可以在纯 bash 中做到这一点:

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

【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多