首页 文章

要添加每年的平均外汇汇率

提问于
浏览
0

我想添加到我的Awk代码(下面),将每年的平均外汇汇率添加到我的数据(或者如果只是部分年份信息,则每个部分年度的平均汇率) . 有关示例,请参阅输出文件的最后两行(包含不准确的样本编号数据) .

缺失的部分是如何获得正确行的平均值 . 有关如何使用Awk计算此信息的任何想法?

输入文件

remove1
MMM YYYY    USD/GBP CAD/GBP EUR/GBP JPY/GBP CHF/GBP AUD/GBP HKD/GBP NZD/GBP KRW/GBP MXN/GBP
Jan 2017    1.2348  1.6288  1.1611  141.81  1.2441  1.6537  9.5778  1.7318  1457.1  26.447
Feb 2017    1.2494  1.6380  1.1732  141.08  1.2508  1.6304  9.6953  1.7283  1426.1  25.369
Mar 2017    1.2346  1.6528  1.1549  139.39  1.2365  1.6199  9.5882  1.7626  1399.4  23.802
Apr 2017    1.2644  1.7001  1.1797  139.31  1.2653  1.6791  9.8297  1.8151  1435.4  23.750
May 2017    1.2920  1.7580  1.1698  145.03  1.2752  1.7379  10.0605 1.8594  1455.2  24.247
Jun 2017    1.2806  1.7030  1.1399  142.05  1.2396  1.6940  9.9874  1.7714  1449.3  23.225
Jul 2017    1.2995  1.6488  1.1272  146.03  1.2480  1.6652  10.1480 1.7658  1471.9  23.137
Aug 2017    1.2951  1.6324  1.0963  142.18  1.2499  1.6362  10.1299 1.7740  1465.3  23.052
Sep 2017    1.3338  1.6383  1.1198  147.83  1.2843  1.6735  10.4205 1.8381  1511.3  23.785
Oct 2017    1.3200  1.6638  1.1229  149.08  1.2966  1.6953  10.3033 1.8758  1494.6  24.849
Nov 2017    1.3230  1.6893  1.1262  149.16  1.3113  1.7358  10.3270 1.9211  1455.8  25.020
Dec 2017    1.3404  1.7118  1.1328  151.38  1.3234  1.7540  10.4727 1.9256  1453.7  25.667
Jan 2018    1.3825  1.7180  1.1328  153.24  1.3276  1.7374  10.8108 1.9027  1474.9  26.137
Feb 2018    1.3962  1.7571  1.1312  150.76  1.3059  1.7748  10.9210 1.9116  1507.0  26.037
Mar 2018    1.3973  1.8070  1.1329  148.25  1.3243  1.8003  10.9564 1.9256  1497.2  26.016
Apr 2018    1.4077  1.7922  1.1468  151.49  1.3630  1.8321  11.0477 1.9432  1504.6  25.874
May 2018    1.3466  1.7335  1.1396  147.62  1.3427  1.7898  10.5694 1.9367  1450.5  26.298
Jun 2018    1.3287  1.7443  1.1380  146.26  1.3154  1.7732  10.4268 1.9147  1455.1  26.977
Jul 2018    1.3170  1.7292  1.1267  146.83  1.3098  1.7783  10.3352 1.9390  1479.2  24.969
Aug 2018    1.2849  1.6791  1.1182  142.59  1.2771  1.7520  10.0874 1.9298  1446.0  24.191
remove2

输出需要

YYYY/MM|MMM YYYY|MMM|YYYY|USD/GBP|CAD/GBP|EUR/GBP|JPY/GBP|CHF/GBP|AUD/GBP|HKD/GBP|NZD/GBP|KRW/GBP|MXN/GBP||||||||
2017/01|1 Jan 2017|Jan|2017|1.2348|1.6288|1.1611|141.81|1.2441|1.6537|9.5778|1.7318|1457.1|26.447||||||||
2017/02|1 Feb 2017|Feb|2017|1.2494|1.6380|1.1732|141.08|1.2508|1.6304|9.6953|1.7283|1426.1|25.369||||||||
2017/03|1 Mar 2017|Mar|2017|1.2346|1.6528|1.1549|139.39|1.2365|1.6199|9.5882|1.7626|1399.4|23.802||||||||
2017/04|1 Apr 2017|Apr|2017|1.2644|1.7001|1.1797|139.31|1.2653|1.6791|9.8297|1.8151|1435.4|23.750||||||||
2017/05|1 May 2017|May|2017|1.2920|1.7580|1.1698|145.03|1.2752|1.7379|10.0605|1.8594|1455.2|24.247||||||||
2017/06|1 Jun 2017|Jun|2017|1.2806|1.7030|1.1399|142.05|1.2396|1.6940|9.9874|1.7714|1449.3|23.225||||||||
2017/07|1 Jul 2017|Jul|2017|1.2995|1.6488|1.1272|146.03|1.2480|1.6652|10.1480|1.7658|1471.9|23.137||||||||
2017/08|1 Aug 2017|Aug|2017|1.2951|1.6324|1.0963|142.18|1.2499|1.6362|10.1299|1.7740|1465.3|23.052||||||||
2017/09|1 Sep 2017|Sep|2017|1.3338|1.6383|1.1198|147.83|1.2843|1.6735|10.4205|1.8381|1511.3|23.785||||||||
2017/10|1 Oct 2017|Oct|2017|1.3200|1.6638|1.1229|149.08|1.2966|1.6953|10.3033|1.8758|1494.6|24.849||||||||
2017/11|1 Nov 2017|Nov|2017|1.3230|1.6893|1.1262|149.16|1.3113|1.7358|10.3270|1.9211|1455.8|25.020||||||||
2017/12|1 Dec 2017|Dec|2017|1.3404|1.7118|1.1328|151.38|1.3234|1.7540|10.4727|1.9256|1453.7|25.667||||||||
2018/01|1 Jan 2018|Jan|2018|1.3825|1.7180|1.1328|153.24|1.3276|1.7374|10.8108|1.9027|1474.9|26.137||||||||
2018/02|1 Feb 2018|Feb|2018|1.3962|1.7571|1.1312|150.76|1.3059|1.7748|10.9210|1.9116|1507.0|26.037||||||||
2018/03|1 Mar 2018|Mar|2018|1.3973|1.8070|1.1329|148.25|1.3243|1.8003|10.9564|1.9256|1497.2|26.016||||||||
2018/04|1 Apr 2018|Apr|2018|1.4077|1.7922|1.1468|151.49|1.3630|1.8321|11.0477|1.9432|1504.6|25.874||||||||
2018/05|1 May 2018|May|2018|1.3466|1.7335|1.1396|147.62|1.3427|1.7898|10.5694|1.9367|1450.5|26.298||||||||
2018/06|1 Jun 2018|Jun|2018|1.3287|1.7443|1.1380|146.26|1.3154|1.7732|10.4268|1.9147|1455.1|26.977||||||||
2018/07|1 Jul 2018|Jul|2018|1.3170|1.7292|1.1267|146.83|1.3098|1.7783|10.3352|1.9390|1479.2|24.969||||||||
2018/08|1 Aug 2018|Aug|2018|1.2849|1.6791|1.1182|142.59|1.2771|1.7520|10.0874|1.9298|1446.0|24.191||||||||
2017/99||AVG|2017|1.3404|1.7118|1.1328|151.38|1.3234|1.7540|10.4727|1.9256|1453.7|25.667||||||||
2018/99||AVG|2018|1.3825|1.7180|1.1328|153.24|1.3276|1.7374|10.8108|1.9027|1474.9|26.137||||||||

代码试用(部分工作)

awk ' BEGIN { OFS="|" }

{ if ($1 ~ /Jan/) $21="01" }
{ if ($1 ~ /Feb/) $21="02" }
{ if ($1 ~ /Mar/) $21="03" }
{ if ($1 ~ /Apr/) $21="04" }
{ if ($1 ~ /May/) $21="05" }
{ if ($1 ~ /Jun/) $21="06" }
{ if ($1 ~ /Jul/) $21="07" }
{ if ($1 ~ /Aug/) $21="08" }
{ if ($1 ~ /Sep/) $21="09" }
{ if ($1 ~ /Oct/) $21="10" }
{ if ($1 ~ /Nov/) $21="11" }
{ if ($1 ~ /Dec/) $21="12" }
{ if ($1 ~ /MMM/) $21="MM" }
###################
{ if (  !/remove1| remove2/  )  { ( MMM_YYYY = 1" "$1" "$2 )  ( YYYY_MM = $2"/"$21 ); print YYYY_MM, MMM_YYYY, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20  } }

'       fxdata         >fxdata_Processed.txt  


awk ' { sub (  /1 MMM YYYY/, "MMM YYYY" )  }1
'       fxdata_Processed.txt         >fxdata_Processed_2.txt

1 回答

  • 0

    这是第一个fx率的原型,你可以添加另一个并修复格式...

    $ awk -v OFS='|' '/^[A-Z][a-z][a-z]/ {sum[$2]+=$3; count[$2]++} 
                      NF>1 && $1=$1; 
                      END {for(k in sum) print k"/99","AVG",k,sum[k]/count[k]}' file
    
    MMM|YYYY|USD/GBP|CAD/GBP|EUR/GBP|JPY/GBP|CHF/GBP|AUD/GBP|HKD/GBP|NZD/GBP|KRW/GBP|MXN/GBP
    Jan|2017|1.2348|1.6288|1.1611|141.81|1.2441|1.6537|9.5778|1.7318|1457.1|26.447
    Feb|2017|1.2494|1.6380|1.1732|141.08|1.2508|1.6304|9.6953|1.7283|1426.1|25.369
    Mar|2017|1.2346|1.6528|1.1549|139.39|1.2365|1.6199|9.5882|1.7626|1399.4|23.802
    Apr|2017|1.2644|1.7001|1.1797|139.31|1.2653|1.6791|9.8297|1.8151|1435.4|23.750
    May|2017|1.2920|1.7580|1.1698|145.03|1.2752|1.7379|10.0605|1.8594|1455.2|24.247
    Jun|2017|1.2806|1.7030|1.1399|142.05|1.2396|1.6940|9.9874|1.7714|1449.3|23.225
    Jul|2017|1.2995|1.6488|1.1272|146.03|1.2480|1.6652|10.1480|1.7658|1471.9|23.137
    Aug|2017|1.2951|1.6324|1.0963|142.18|1.2499|1.6362|10.1299|1.7740|1465.3|23.052
    Sep|2017|1.3338|1.6383|1.1198|147.83|1.2843|1.6735|10.4205|1.8381|1511.3|23.785
    Oct|2017|1.3200|1.6638|1.1229|149.08|1.2966|1.6953|10.3033|1.8758|1494.6|24.849
    Nov|2017|1.3230|1.6893|1.1262|149.16|1.3113|1.7358|10.3270|1.9211|1455.8|25.020
    Dec|2017|1.3404|1.7118|1.1328|151.38|1.3234|1.7540|10.4727|1.9256|1453.7|25.667
    Jan|2018|1.3825|1.7180|1.1328|153.24|1.3276|1.7374|10.8108|1.9027|1474.9|26.137
    Feb|2018|1.3962|1.7571|1.1312|150.76|1.3059|1.7748|10.9210|1.9116|1507.0|26.037
    Mar|2018|1.3973|1.8070|1.1329|148.25|1.3243|1.8003|10.9564|1.9256|1497.2|26.016
    Apr|2018|1.4077|1.7922|1.1468|151.49|1.3630|1.8321|11.0477|1.9432|1504.6|25.874
    May|2018|1.3466|1.7335|1.1396|147.62|1.3427|1.7898|10.5694|1.9367|1450.5|26.298
    Jun|2018|1.3287|1.7443|1.1380|146.26|1.3154|1.7732|10.4268|1.9147|1455.1|26.977
    Jul|2018|1.3170|1.7292|1.1267|146.83|1.3098|1.7783|10.3352|1.9390|1479.2|24.969
    Aug|2018|1.2849|1.6791|1.1182|142.59|1.2771|1.7520|10.0874|1.9298|1446.0|24.191
    2017/99|AVG|2017|1.28897
    2018/99|AVG|2018|1.35761
    

    请注意,您的平均计算似乎不正确 . 对于我计算的列,您刚刚使用了2017年的最后一个和2018年的第一个 .

    也许你可能需要添加一个更好的模式,也许是 /Jan|Feb|Mar|.../ 而不是我的快捷方式 .

相关问题