【问题标题】:Printing only the first field in a string仅打印字符串中的第一个字段
【发布时间】:2013-02-08 02:14:29
【问题描述】:

我有一个日期为12/12/2013 14:32,我只想将其转换为12/12/2013。 字符串可以是1/1/2013 12:321/10/2013 23:41 我只需要日期部分。

【问题讨论】:

    标签: unix sed awk field cut


    【解决方案1】:

    您可以使用各种 Unix 工具轻松做到这一点:

    $ cut -d' ' -f1  <<< "12/12/2013 14:32"
    12/12/2013
    
    $ awk '{print $1}' <<< "12/12/2013 14:32"
    12/12/2013
    
    $ sed 's/ .*//' <<< "12/12/2013 14:32"
    12/12/2013
    
    $ grep -o "^\S\+"  <<< "12/12/2013 14:32"
    12/12/2013
    
    $ perl -lane 'print $F[0]' <<< "12/12/2013 14:32"
    12/12/2013
    

    【讨论】:

    • $ python -c "import sys; print(sys.argv[1].split()[0])" "12/12/2013 14:32"
    • 或者照搬:$ python -c "import sys; print(sys.stdin.read().split()[0])" &lt;&lt;&lt; "12/12/2013 14:32"
    【解决方案2】:

    如果您的日期字符串存储在变量中,那么您不需要运行像cutawksed 这样的外部程序,因为像bash 这样的现代shell 可以直接执行string manipulation哪个更有效。

    例如,在 bash 中:

    $ s="1/10/2013 23:41"
    $ echo "${s% *}"
    1/10/2013
    

    【讨论】:

      【解决方案3】:
      $ echo "12/12/2013 14:32" | awk '{print $1}'
      12/12/2013
      

      print $1 --> 打印提供的字符串的第一列。 12/12/2013

      print $2 --> 打印提供的字符串的第二列。 14:32

      默认情况下,awk 将空格字符视为分隔符。

      【讨论】:

        猜你喜欢
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多