【问题标题】:How to fragment a character string in Linux/Unix Shell?如何在 Linux/Unix Shell 中对字符串进行分段?
【发布时间】:2017-07-10 16:35:05
【问题描述】:

我存储在变量中的内容,例如 xyz:

20170629

我要打印的内容:

2017 年 06 月 29 日

我该怎么做:

year=$(echo $xyz | cut -c1-4)
month=$(echo $xyz | cut -c5-6)
day=$(echo $xyz | cut -c7-8)

echo $year $month $day

我需要知道一种更懒惰的方式来实现这一点。谢谢你。

【问题讨论】:

    标签: linux bash shell unix scripting


    【解决方案1】:

    内置 bash substring manipulation:

     echo ${xyz:0:4} ${xyz:4:2} ${xyz:6:2}
    

    这将从位置 0 回显长度为 4(年)的子字符串,然后从位置 4 回显长度为 2(月)的子字符串,最后从位置 6 回显长度为 2(天)的子字符串。

    或者使用date 命令:

    date -d'20160629' "+%Y %m %d"
    

    我们向它提供输入日期并为其提供新格式。检查 date 手册页和 man date 以查看所有格式选项。

    【讨论】:

    • 谢谢先生!感谢您清晰的回答。
    【解决方案2】:

    在 POSIX shell 中,您可以使用:

    $ echo $(expr substr "$var" 1 4) \
           $(expr substr "$var" 5 2) \
           $(expr substr "$var" 7 2)
    

    如果您使用 bash,字符串索引 是最佳选择,但对于通常暗示 POSIX shell 的shell字符串索引 不可用。

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多