2016-02-03 113 views
0

修改文件我的播放列表,如波紋管:使用SED或AWK

>#EXTM3U 
>#EXTINF:654,filenameSong1.aiff 
>/Users/myname/Music/folder1/filenameSong1.aiff 
>#EXTINF:198,filenamesong2.mp4 
>/Users/myname/Music/folder1/subfolder2/filenameSong2.mp4 
>#EXTINF:217,filenameSong3.mp3 
>/Users/myname/Music/folder1/subfolder3/filenameSong3.mp3 
>#EXTINF:341,filenameSong4.mp4 
>/Users/myname/Music/folder1/subfolder3/filenameSong4.mp4 

我想用awk或者sed或兩個

這樣的組合filenameSong仍然存在,但根源上改變這個文件成爲「/音樂/ 例如

/Users/myname/Music/folder1/subfolder3/filenameSong4.mp4變得 /MUSIC/filenameSong4.mp4 或 /MUSIC/NEWFOLDERNAME/filenameSong4.mp4

帶有用於在MUSIC文件夾後面添加新文件夾名稱的選項。 我想如果我可以找到一種方法來更改Sed命令中的替換項或/和每行使用basename命令。

有人可以幫助我如何做到這一點?

回答

0

假設在您的示例文本「>」字符是實際的文字,而不是格式化的一些神器:

sed '[email protected]^>/Users.*/@>/MUSIC/@' input 

如果你想爲一個子目錄選項:

#!/bin/sh 

sed "[email protected]^>/Users.*/@>/MUSIC${1+/}$1/@" input 
+0

感謝答覆。我在這裏是新人。我以爲我需要把「>」爲了阻止我的代碼。我的腳本不包含任何「>」 – siamak

+0

謝謝我只從你的代碼中刪除了「>」,並且做了我想要的。假設我可以在MUSIC之後添加新文件夾名稱的變量或名稱,並且可以添加可選的新文件夾名稱。 – siamak

+0

oops:當我運行sed的@ ^/Users。*/@/MUSIC /「$ NewFolderName」$ {1 + /} $ 1/@「」$ 1「 – siamak