气象数据处理脚本篇(三):CSV文件

    前面两篇讨论了对txt数据的处理,本篇则讨论下CSV数据的处理。处理的大致思路相同,主要区别在于CSV数据列(或称字段)与列之间用逗号隔开,而txt一般用空格隔开

    以下对CSV格式的介绍来自于网络。

    CSVComma Separated Values,逗号分隔型取值格式,是一种纯文本格式,用来存储数据,用逗号分隔字段(用vim打开可发现这点)。CSV格式是分隔的数据格式,有字段/列分隔的逗号字符和记录/行分隔换行符。字段包含特殊字符(逗号,换行符,或双引号),必须以双引号括住。行内包含一个项目是空字符串,可以以双引号括住。字段的值包含双引号时,要双写这个双引号(就像把一个双引号当做转义符一样)。

                图1 excel打开csv文件情形

 

                 图2 gvim打开csv文件情形

由图1和图2对比可以看出

  •  csv文件字段以逗号作为分隔符,行结束不用逗号 
  •  如果字段中出现逗号等特殊字符,字段值必须用双引号" "括起来;(对比第五行第一列) 
  •  如果行中某一字段为空,能需要逗号分隔以示其存在。(对比第四行第二列)

 

处理要求:现有数据wind_201101.csv(见图3),提取datevwind两列到新建文件  

          vwind_201101.csv

                   图3  wind_201101.csv

 

需要解决两个问题:

1.由于awk输入字段分隔符内置变量为FS,默认字段分隔符FS值是空格或tab,而CSV文件字段分隔符是逗号,所以需要改变FS值,有两种方法,通过在BEGIN语句中赋值或命令行加选项-F赋值。

awk -F","  '{print $1 , $3}'  wind_201101.csv

 

  图输出结果

2.可以从上图看出,默认输出字段分隔符是单个空格,被保存在内置变量OFS中。如果用OFS默认值,$1$3之间的逗号会被转换成单个空格,print函数打印这两个字段时会在它们之间加上一个空格。由于要求保存为CSV文件,OFS要设置成逗号分隔符,有两种方法,通过在BEGIN语句中赋值或$1$3之间逗号加上双引号。

awk -F","  '{print $1 "," $3}'  wind_201101.csv 

 

                      

                     图输出结果

 

3.将输出结果写入vwind_201101.csv中:

awk -F","  '{print $1 "," $3}'  wind_201101.csv > vwind_201101.csv

或 

awk 'BEGIN{FS="," ; OFS="," }{print $1,$3}'  wind_201101.csv >vwind_201101.csv

*******************************************************************************

转载于:https://www.cnblogs.com/Parallel-Life/archive/2012/10/08/2715724.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值