0

我正在使用 awk 从曲目开始时间列表中为长 mp3 创建一个 .cue 表,因此输入可能如下所示:

01:01:00-Title-Artist
01:02:00:00-Title2-Artist2

目前,我使用“-”作为字段分隔符,以便捕获开始时间、艺术家和标题以进行操作。

第一次可以在提示表中使用。第二次需要转换为 62:00:00(cue sheet 无法处理小时数)。做这个的最好方式是什么?如有必要,我可以强制输入文件中的所有时间在小时部分都有“00:”,但如果我不需要,我宁愿不这样做。

最终,我希望时间、标题和艺术家字段的时间字段的分钟数大于 60,而不是小时字段。

4

2 回答 2

3

fedorqui 的解决方案是有效的:只需将输出通过管道传输到另一个 awk 实例。但是,如果您想在一个 awk 进程中执行此操作,您可以执行以下操作:

awk 'split($1,a,":")==4 { $1 = a[1] * 60 + a[2] ":" a[3] ":" a[4]}
    1' FS=- OFS=- input

拆分仅适用于第一个字段。如果有 4 个元素,则模式会重写所需输出中的第一个字段。

于 2013-08-21T23:27:43.543 回答
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 个或更多基于:split 的字段,它会将 1st 和 2nd 与 rule 连接起来60*1st + 2ndFS表示字段分隔符,并:在开头设置为。

于 2013-08-21T22:10:40.780 回答