ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20200208]awk学习例子.txt

[20200208]awk学习例子.txt

原创 Linux操作系统 作者:lfree 时间:2020-02-08 11:19:31 0 删除 编辑

[20200208]awk学习例子.txt

--//链接测试使用awk,http://blog.itpub.net/267265/viewspace-2674776/
--//我当时初始a=909来计算,推测记录增加10%,采用新的子光标。

$ grep "SQL_ID" ez20.txt |  uniq -c
   1000 SQL_ID  basmuva6swhg4, child number 0
    101 SQL_ID  basmuva6swhg4, child number 1
    111 SQL_ID  basmuva6swhg4, child number 2
    122 SQL_ID  basmuva6swhg4, child number 3
    134 SQL_ID  basmuva6swhg4, child number 4
    147 SQL_ID  basmuva6swhg4, child number 5
    162 SQL_ID  basmuva6swhg4, child number 6
    178 SQL_ID  basmuva6swhg4, child number 7
     45 SQL_ID  basmuva6swhg4, child number 8

--//当时写的脚本如下;
$ grep "SQL_ID" ez20.txt |  uniq -c | awk 'BEGIN {a=909;} {sum=sum+$1;a=a*1.10;print  sum, a }'
1000 999.9
1101 1099.89
1212 1209.88
1334 1330.87
1468 1463.95
1615 1610.35
1777 1771.38
1955 1948.52
2000 2143.37
--//越往后误差有点大。改写如下:

$ grep "SQL_ID" ez20.txt |  uniq -c | awk 'NR==1 {sum=sum+$1;a=$1 ;print sum,sum }; NR>1 { sum=sum+$1 ;a=a*1.10;print  sum, a, sum-a }  '
1000 1000
1101 1100 1
1212 1210 2
1334 1331 3
1468 1464.1 3.9
1615 1610.51 4.49
1777 1771.56 5.439
1955 1948.72 6.2829
2000 2143.59 -143.589
--//这样计算也是一样,越往后误差有点大,每一级相差1.注:最后一行不算。修正如下:

$ grep "SQL_ID" ez20.txt |  uniq -c | awk 'NR==1 {sum=sum+$1;a=$1 ;print sum,sum }; NR>1 { sum=sum+$1 ;a=a*1.10;print  sum, a+NR-1} '
1000 1000
1101 1101
1212 1212
1334 1334
1468 1468.1
1615 1615.51
1777 1777.56
1955 1955.72
2000 2151.59
--//这样就比较接近测试的情况.

$ grep "SQL_ID" ez20.txt |  uniq -c | awk 'BEGIN {a=909;} {sum=sum+$1;a=a*1.10;print  sum, a+NR-1 }'
1000 999.9
1101 1100.89
1212 1211.88
1334 1333.87
1468 1467.95
1615 1615.35
1777 1777.38
1955 1955.52
2000 2151.37

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2674783/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2634
  • 访问量
    6397110