损坏的播放列表缺少某些换行符,如何添加它们?

时间:2015-09-15 17:51:31

标签: bash newline playlist

我遇到的问题是我的一些大型播放列表包含一些缺少换行符的行。

我想要做的是解析文件并在\n之前插入/run/,如果没有新行。我试过了:

text=$(< *.m3u)
text=${text//$'/run/}'/$'\n\n\r/run/}'}
printf "%s\n" "$text" > file.m3u

但它似乎不起作用。我尝试了其他一些方法,但它们都失败了,所以我想也许我错过了一些非常明显和基本的东西。

OK行:

/run/.../../.. .../hippho.mp3

有缺陷的一行:

/run/.../../.. .../holla.amigo.mp3/run/.../../.. .../dodoh.mp3

在回复第一个回复时,这个

sed -e 's@/run/@\n/run/@g' *.m3u > PLAYLIST

给了我一个包含很多\n\n/run/的文件。我试着用

修复它
sed -e ':a;N;$!ba;s/\n\n/\n/g;p' PLAYLIST > PLAYLIST1

删除它们,但是两次列出所有文件 - 为什么会这样?

我修复了删除文件的第二个列表:

playlist='PLAYLIST1'
split -a 1 -d -n l/2 $playlist $playlist
cp PLAYLIST10 PLAYLIST

这最终给了我想要的东西,但必须有更漂亮的方式。

有。     sed -e's @(。)/ run / @ \ 1 \ n / run / @ g'* .m3u 这一切都归功于tripleee

1 个答案:

答案 0 :(得分:1)

这使用sed而不是bash,并在文件开头添加新行。

sed -e 's@/run/@\n/run/@g' *.m3u