【问题标题】:How to extract year from date format and find all years greater than如何从日期格式中提取年份并找到大于的所有年份
【发布时间】:2015-02-07 23:48:24
【问题描述】:

我需要在一个字段中打印所有大于 1900 的年份。我习惯用 awk 来获取带有日期的字段。但我不知道如何使用 awk 仅提取 >=1900 的年份。

到目前为止,我通过输入以下内容提取了该字段:

awk -F',' '{print $5}' 总统.csv

这给了我这些日期

4/03/1893
4/03/1897
14/9/1901
4/3/1909
4/03/1913
4/03/1921
2/8/1923
4/03/1929
4/03/1933
12/4/1945
20/01/1953
20/01/1961
22/11/1963
20/1/1969
9/8/1974
20/01/1977
20/01/1981
20/01/1989
20/01/1993
20/01/2001
20/01/2009
Incumbent

【问题讨论】:

    标签: bash shell date awk format


    【解决方案1】:
       awk -F',' '{print $5}' presidents.csv | awk -F '/'  '$3 > 1900 { print $1"/"$2"/"$3 }'
    

    【讨论】:

      【解决方案2】:

      试试这个

        #instead of presidents.csv
       echo "
      f1,f2,f3,f4,4/03/1893
      f1,f2,f3,f4,4/03/1897
      f1,f2,f3,f4,14/9/1901
      f1,f2,f3,f4,4/3/1909
      f1,f2,f3,f4,4/03/1913
      f1,f2,f3,f4,4/03/1921" \
      | awk -F',' '{print $5}' \
      | awk '{split($0,lineArr,"/");if (lineArr[3] > 1900) print $0}'
      14/9/1901
      4/3/1909
      4/03/1913
      4/03/1921
      

      【讨论】:

      • Sridhar 直接使用presidents.csv 文件时将其显示为单行时,为什么要这样做?
      • 此表格用作测试平台。你可以看到输入,你可以注释掉任何你喜欢的东西,你可以看到输出。所以你总是可以注释掉所有的echo,把presidents.csv放在...print $5}'之后,你可以把我的第二条awk语句放在同一行。祝你好运!
      • OP 的要求并不复杂,需要提供一个“测试平台”,特别是考虑到 OP 中显示的 awk 命令的输出,它只是一个通过另一个awk 命令将初始输出进一步过滤的问题。是的,您在修改为有用时呈现的内容确实输出了所需的结果,但是 Sridhar 呈现的内容并没有那么复杂,以至于它需要一个“测试台”(或解释)。
      • 每个人都有自己的@3439894 ;-)。我很高兴 OP 得到了满足他/她需求的答案,我对此表示赞成。你呢?。祝大家好运!
      • 您可以将print $0 更改为仅print 在没有数据的情况下,它将执行默认操作,print $0
      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2020-10-11
      • 2016-11-29
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多