[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

回复 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 编辑

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

TOP

改了一版
  1. {
  2.     n=$10":"$9
  3.     idx[n]
  4.     sum[n,1]+=$1
  5.     sum[n,2]+=$2
  6. }
  7. END{
  8.     asorti(idx)
  9.     split("KMGT", suffix, "")
  10.     for (i in idx)
  11.     {
  12.         i=idx[i]
  13.         print  i  getn(sum[i,1])  getn(sum[i,2])
  14.     }
  15. }
  16. function getn(num,_LOCAL_,i)
  17. {
  18.     for(i=0; num>=1024 && i < 4; i++) num/=1024
  19.     return num""suffix[i]
  20. }
复制代码

TOP

返回列表