我有一个这种形式的文件:

2ThroughputRule.js:128 bw   3545891 3545891 3545891 
ThroughputRule.js:128 bw    124776  1835334 1151111 
ThroughputRule.js:128 bw    1959606 1876758 2435492 
ThroughputRule.js:128 bw    3213333 1765905 2979981 
2ThroughputRule.js:128 bw   1985927 2386289 2284143 

我想要一种处理文件的方法,以便 shell 脚本可以读取每行的第一个字符,如果它找到一个数字,则从该数字旁边复制该行的次数,直到下面的 EOL。

例如我有

2ThroughputRule.js:128 bw 3545891 3545891 3545891

结果将是

2ThroughputRule.js:128 bw 3545891 3545891 3545891

ThroughputRule.js:128 bw 3545891 3545891 3545891

如果我有

4ThroughputRule.js:128 bw 3545891 3545891 3545891

ThroughputRule.js:128 bw 3545891 3545891 3545891

ThroughputRule.js:128 bw 3545891 3545891 3545891

ThroughputRule.js:128 bw 3545891 3545891 3545891

可以这样做吗?

请您参考如下方法:

您可以尝试这个程序。另存为pr.awk 。并运行awk -f pr.awk test.txt

function force_num(x) {return x+0} 
 
match($0, "^[0-9]+") { 
    n   = substr($0, RSTART, RLENGTH) 
    n   = force_num(n) 
 
    rst = substr($0, RSTART + RLENGTH) 
    for (i=1; i<=n; i++) 
        print rst 
 
    next 
} 
 
{ 
    print 
} 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!