[20200208]awk學習例子.txt

lfree發表於2020-02-08

[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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章