![比较不同格式的日期并与另一个文件进行匹配](https://linux22.com/image/176301/%E6%AF%94%E8%BE%83%E4%B8%8D%E5%90%8C%E6%A0%BC%E5%BC%8F%E7%9A%84%E6%97%A5%E6%9C%9F%E5%B9%B6%E4%B8%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D.png)
我有两个带有不同格式的日期戳的数据文件(作为文件内容中的文本)。我希望比较两个日期并根据 shell 脚本中的日期将变量从一个文件打印到另一个文件。我在 MATLAB 中有一个脚本,但我想在 shell 脚本中执行它。在一个文件中,日期格式为2017-01-01 12:00:00
.在另一个文件中是20170101 1200
.对于一个变量,我想将它与 in 中的日期进行比较,以及它是否与fromfile1
中作为列的打印变量匹配。file1
file2
答案1
您可以通过参数替换在普通 bash 中执行此操作:
dateA='2017-01-01 12:00:00'
dateB='20170101 1200'
tmpA=${dateA//[-:]/} # remove hyphens and colons
# next expansion excludes last 2 characters
[[ "${tmpA:0:-2}" == "$dateB" ]] && echo same || echo different
same
较旧的 bash 版本不支持负长度,但您可以使用${tmpA:0:${#tmpA}-2}