我遇到的问题是我的一些大型播放列表包含一些缺少换行符的行。
我想要做的是解析文件并在\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
答案 0 :(得分:1)
这使用sed而不是bash,并在文件开头添加新行。
sed -e 's@/run/@\n/run/@g' *.m3u