我正在使用awk从曲目开始时间列表中为长mp3创建.cue表,因此输入可能如下所示:
01:01:00-Title-Artist
01:02:00:00-Title2-Artist2
目前,我使用“ - ”作为字段分隔符,以便我可以捕获开始时间,艺术家和标题进行操作。
第一次可以在cue表中使用。第二次需要转换为62:00:00(提示表无法处理小时数)。做这个的最好方式是什么?如果有必要,我可以强制输入文件中的所有时间在小时部分都有“00:”,但如果我不需要,我宁愿不这样做。
最终,我希望时间,标题和艺术家字段的时间字段的分钟数大于60而不是一小时字段。
答案 0 :(得分:3)
像这样,例如:
$ awk -F: '{if (NF>3) $0=($1*60+$2)FS$3FS$4}1' file
01:01:00-Title-Artist
62:00:00-Title2-Artist2
如果文件包含基于:
拆分的4个或更多字段,则它将第1个和第2个加入规则60*1st + 2nd
。 FS
表示字段分隔符,并在开头设置为:
。
答案 1 :(得分:3)
fedorqui的解决方案是有效的:只需将输出传递给另一个awk实例。但是,如果您想在一个awk进程中执行此操作,则可以执行以下操作:
awk 'split($1,a,":")==4 { $1 = a[1] * 60 + a[2] ":" a[3] ":" a[4]}
1' FS=- OFS=- input
拆分仅适用于第一个字段。如果有4个元素,则模式会在所需输出中重写第一个字段。