如何转换:
2013-08-16T13:24:18+0200
从当前格式 yyyy-mm-ddThh:mm:ss+hhmm
到这种格式?
yyyy/mm/dd.hh:mm:ss
(2013/08/18.13:24:18
)
这些值在一个 csv 文件中,也有负值,所以我不能只用正斜杠替换连字符,我还想删除指定时区的部分。 我对 sed 和 awk 的了解非常基础。
最佳答案
拆分 CSV 可能非常棘手,具体取决于是引用所有内容还是不引用任何内容,或者引用某些字段。然后,我们可以开始担心您的字符串中是否有转义引号。或字符串中的逗号。
如果不更好地了解您的数据(也许您的字符串中没有逗号,也没有引号需要担心),您可能会也可能不会使用 sed/awk。如果您有复杂的 CSV,我建议您使用更强大的东西,例如 perl 和 Text::CSV。
因此,我将向您展示如何解析包含纯日期 的文件,以避免 CSV 的复杂性。
perl 方式:
cat tmp.txt | perl -e 'for (<>){ s!(\d+)\D(\d+)\D(\d+)T(\d+)\D(\d+)\D(\d+)\+.*!$1/$2/$3.$4:$5:$6!; print $_}'
SED 方式:
sed -r 's!([0-9]+)\D([0-9]+)\D([0-9]+)T([0-9]+)\D([0-9]+)\D([0-9]+)\+.*!\1/\2/\3.\4:\5:\6!' tmp.txt
关于regex - 将日期从 ISO 时间格式转换为 yyyy/mm/dd.hh :mm:ss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316168/