使用sed或awk修改文件

使用sed或awk修改文件,awk,sed,Awk,Sed,我有如下播放列表: >#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/my

我有如下播放列表:

>#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
我想使用sed或awk或两者的组合来更改此文件

这样,filenameSong保留下来,但根变成了音乐/ e、 g

/Users/myname/Music/folder1/subfolder3/filenameSong4.mp4变为 /音乐/文件名song4.mp4 或 /音乐/NEWFOLDERNAME/filenameSong4.mp4

具有在音乐文件夹后添加新文件夹名称的选项。 我想如果我能找到一种方法来改变Sed命令中的replace term,或者/或者对每一行使用basename命令


有人能帮我怎么做吗?

假设示例文本中的'>'字符是实际文本,而不是一些格式化的产物:

sed 's@^>/Users.*/@>/MUSIC/@' input
如果需要子目录的选项:

#!/bin/sh 

sed "s@^>/Users.*/@>/MUSIC${1+/}$1/@" input

谢谢回复。我是这里的新来者。我想我需要放置“>”来阻止我的代码。我的脚本不包含任何“>”谢谢,我只删除了“>“根据你的代码,我做了我想要的。假设我可以在音乐之后添加新文件夹名称的变量或名称,并且可以添加可选的新文件夹名称。oops:当我运行sed“s@^/Users.*/@/MUSIC/”$NewFolderName“${1+/}$1/@”“$1”时,请忽略最后的注释。我是新来的,不知道如何删除它。在上面的文件中,如何跳过包含“#EXTM3U”和“#extef”的行来运行awk?生成一个没有包含“#EXTM3U”和“#extef”行的文件。