【问题标题】:Bash Script- Process CSV fileBash 脚本 - 处理 CSV 文件
【发布时间】:2017-12-04 03:11:03
【问题描述】:

我在 CSV 中有 3rd 字段用于 DateOfBirth 为:02041996

我想将其格式更改为02/04/1996。有什么方法可以在特定位数后添加/

【问题讨论】:

  • 显示示例线。此外,您已显示19996
  • 对不起,打错了,是 1996

标签: shell csv sed


【解决方案1】:

以下将使用awksplit 函数拆分第三个字段,并且每个字段都由"" 分隔。稍后在打印语句中,使用a[N] 调用每个字段。

awk -F, -v OFS=,  '{split($3,a,"");$3=a[1]a[2]"/"a[3]a[4]"/"a[5]a[6]a[7]a[8]}1' csvFile

【讨论】:

    【解决方案2】:

    使用awksubstr函数:

    awk -F, '{ $3=substr($3,1,2)"/"substr($3,3,2)"/"substr($3,5) }1' OFS=',' file
    

    【讨论】:

      【解决方案3】:

      另一个awk解决方案:

      awk -F, '{$3 = gensub(/([^ ]{2})([^ ]{2})(.*)/, "\\1/\\2/\\3", "g", $3)}1' OFS=','
      

      示例:

      AMD$ echo " col1 ,   col2,    02041996, col4 " | awk -F, '{$3 = gensub(/([^ ]{2})([^ ]{2})(.*)/, "\\1/\\2/\\3", "g", $3)}1' OFS=','
       col1 ,   col2,    02/04/1996, col4
      

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 2013-04-20
        相关资源
        最近更新 更多