Board logo

标题: [技术讨论] [求助] shell 有类似 windows 里 for 语句的功能吗? [打印本页]

作者: newswan    时间: 2021-3-28 01:24     标题: [求助] 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
复制代码
还有更好的方法没
作者: Batcher    时间: 2021-3-28 09:36

回复 1# newswan


    列操作,还是用 awk 比较方便吧。
作者: newswan    时间: 2021-3-30 03:12

本帖最后由 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. }
复制代码
完成。。。
作者: newswan    时间: 2021-3-30 22:46

改了一版
  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. }
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2