我正在尝试处理结构如下的 m3u 播放列表文件:
#EXTM3U
#EXTING:193,Song name
/path/to/the/song.mp3
#EXTING:201,Another song
/somewhere/in/a directory/song2.mp3
目的是,对于包含路径的每一行,删除路径并仅保留文件名和扩展名。例如,上面的文件将变为:
#EXTM3U
#EXTING:193,Song name
song.mp3
#EXTING:201,Another song
song2.mp3
我尝试了 awk 的几种变体,我能得到的最接近的是这个:
awk '{if ((NR % 2 == 1) && (NR != 1)){print "$(basename $0)"}else{print}}' playlist.m3u
if/else 结构没问题,只有“print basename”不起作用,我不得不承认 shell 不是我的强项;)
有人可以帮忙吗?
多谢!
答案1
awk -F/ '!/^#/{$0=$NF}1' playlist.m3u