2013-08-21 40 views
0

我使用awk來創建用於從軌道起始時間列表很長的MP3一個.CUE片,所以輸入可能是這樣的:如何使用awk來修改這個領域

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

目前,我使用「 - 」作爲字段分隔符,以便我可以捕獲開始時間,藝術家和標題進行操作。

第一次可以在演出表中使用。第二次需要轉換爲62:00:00(提示表不能處理小時)。做這個的最好方式是什麼?如有必要,我可以強制輸入文件中的所有時間在小時段中都有「00:」,但是如果不必這樣做,我寧願不這樣做。

最終,我希望擁有時間字段的時間,標題和藝術家字段的分鐘數大於60,而不是一個小時字段。

+0

請仔細閱讀後面的示例輸出。 – Jotne

回答

3

fedorqui的解決方案是有效的:只需將輸出傳輸到另一個awk實例。但是,如果你想要做一個awk的過程中,你可以這樣做:

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

分割工作僅在第一個字段。如果有4個元素,則模式將重新寫入所需輸出中的第一個字段。

+0

+1,我喜歡。您也可以使用已設置的FS = -'替換'FS'的'「:」'。 – fedorqui

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個或多個字段,它加入第一和第二與規則60*1st + 2ndFS表示字段分隔符,並在開頭設置爲:

+0

有沒有另一種方法來做到這一點?我使用「 - 」作爲字段分隔符,以便我可以分開藝術家和標題。 –

+1

這符合您在問題中指定的要求。如果你想要一個不同的輸出,請更新你的問題,並指出哪個是所需的輸出。 – fedorqui

+0

@Pinyaka你也可以使用多個字段分隔符和'-F =「[: - ]」' – fedorqui