返回列表 发帖

[技术讨论] [求助] shell 有类似 windows 里 for 语句的功能吗?

本帖最后由 newswan 于 2021-3-28 01:27 编辑

shell 有类似 windows 中 for 语句的功能吗?
比如:
for /f "tokesns=3,6" %a in () do COPY
可以用函数调用
f1()
{
    echo $1
    echo $3
}
f1 lineCOPY
还有更好的方法没

回复 1# newswan


    列操作,还是用 awk 比较方便吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 newswan 于 2021-3-30 15:57 编辑

嗯嗯,搞定,各种编程规则,太麻烦了,很少用,每次使用都要复习一下,好痛苦。。。
{
    n=$10":"$9;
    sum1[n]+=$1;
    sum2[n]+=$2;
}
END{
    split("KMGT", suffix, "")
    for (i in sum1)
    {
        print  i  getn(sum1[i])  getn(sum2[i]);
    }
}
function getn(num,_LOCAL_,i)
{
    for(i=0; num>=1024 && i < 4; i++) num/=1024
    return num""suffix[i]
}COPY
完成。。。

TOP

改了一版
{
    n=$10":"$9
    idx[n]
    sum[n,1]+=$1
    sum[n,2]+=$2
}
END{
    asorti(idx)
    split("KMGT", suffix, "")
    for (i in idx)
    {
        i=idx[i]
        print  i  getn(sum[i,1])  getn(sum[i,2])
    }
}
function getn(num,_LOCAL_,i)
{
    for(i=0; num>=1024 && i < 4; i++) num/=1024
    return num""suffix[i]
}COPY

TOP

返回列表