bash - 如何在 Shell 中解析日期?

标签 bash shell parsing date time

现在我正在尝试解析我获取的时间和日期的值,并按每个数字将其分解

日期/时间的格式

#!/bin/bash 
prevDateTime=$(date +'%Y-%m-%d-%H:%M:%S')
echo "${prevDateTime}"

我希望能够像这样列出来

echo "${prevYear}"
echo "${prevMonth}"
echo "${prevDay}"
echo "${prevHour}"
echo "${prevMinute}"
echo "${prevSecond}"

然后点赞

echo "${prevDate}"
echo "${precTime}"

但我不确定如何解析出任何帮助的信息会很棒

最佳答案

考虑到 prevDateTime 的格式,正则表达式可能是最简单的解决方案。

[[ $prevDateTime =~ (.*)-(.*)-(.*)-(.*):(.*):(.*) ]]
prevYear=${BASH_REMATCH[1]}
prevMonth=${BASH_REMATCH[2]}
# etc.

从技术上讲,有一个“one”-liner 可以使用 declare 来做到这一点:

declare $(date +'prevDateTime=%Y-%m-%d:%H:%M:%S
prevYear=%Y
prevMonth=%m
prevDat=%d
prevHour=%H
prevMinute=%M
prevSecond=%S')

它使用date 输出一组参数赋值,declare 实例化。 (请注意,命令替换未被引用,因此每个赋值都被视为 declare 的单独参数。如果要赋值的值中有任何空格,则必须切换到使用 evaldate 的输出略有不同。)

关于bash - 如何在 Shell 中解析日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376356/

相关文章:

linux - SeD 正则表达式替换

linux - 返回包含指定字符串的全局变量列表的脚本

java - 使用 Talend 根据输入的关键字将 HTML 搜索页面提取到 .txt 文件中。如何端到端解析这些数据并将其写入 MySQL?

javascript - 吉森递归

linux - 如何在 gcloud linux 命令上自动插入输入

bash - 通过 bash 编辑特权文件

linux - 无法遍历所有文件夹

java - 使用 XML 解析器实现作为 OSGi 服务

r - 让 Rscript 读取或从标准输入获取输入

bash - Unix bash 使用名称中的变量动态添加函数