我有这个带有持续时间的文件。有些有日期,但大多数采用 hh:mm 形式。整个形式为dd+hh:mm 我试图将它们“tr -s '+:' ':'” 转换为 dd:hh:mm 形式,然后 split($1,tm,":") 将它们计算为秒。 然而,我面临的问题是,在这个操作之后,带有 hh:mm 的形式在 tm[1] 中将有 hh,但如果它是 dd:hh:mm 那么 tm[1] 将是 dd。 有没有办法把 hh 形式的 hh:mm 放入 tm[2] 并把 tm[1] 设为 0?
4+11:26
10+06:54
20:27
是输入
我想要的输出是(以 tm[1]、tm[2]、tm[3] 的形式):
4 11 26
10 06 54
0 20 27
最佳答案
我首先使用 sed 对其进行预处理(在没有加号的行中添加缺少的 0+
),然后将 tr
+:
添加到空格:
cat a.txt | sed 's/^\([^+]\+\)$/0+\1/g' | tr '+:' ' '
或者按照 Lars 的建议,较短的 sed
版本:
cat a.txt | sed '/+/! s/^/0+/;' | tr '+:' ' '
关于linux - 如何使用shell将字符串分割成正确的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38533588/