2016-02-03 195 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