找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17567|回复: 3

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

[复制链接]
发表于 2021-3-28 01:24:40 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
还有更好的方法没
发表于 2021-3-28 09:36:38 | 显示全部楼层
回复 1# newswan


    列操作,还是用 awk 比较方便吧。
 楼主| 发表于 2021-3-30 03:12:42 | 显示全部楼层
本帖最后由 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. }
复制代码
完成。。。
 楼主| 发表于 2021-3-30 22:46:20 | 显示全部楼层
改了一版
  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. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:23 , Processed in 0.012034 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表