问题是我的一些大播放列表包含一些缺少换行符的行。
我想做的是解析文件,如果没有新行,在/run/
之前插入n
。我试着:
text=$(< *.m3u)
text=${text//$'/run/}'/$'nnr/run/}'}
printf "%sn" "$text" > file.m3u
,但它似乎不起作用。我试过其他方法,但都失败了,所以我想也许我错过了一些非常明显和基本的东西。
OK线:
/run/.../../.. .../hippho.mp3
缺陷:
/run/.../../.. .../holla.amigo.mp3/run/.../../.. .../dodoh.mp3
作为对第一个回复的响应,这个
sed -e 's@/run/@n/run/@g' *.m3u > PLAYLIST
给了我一个包含许多nn/run/
的文件。我试着用
sed -e ':a;N;$!ba;s/nn/n/g;p' PLAYLIST > PLAYLIST1
会删除它们,而是列出所有文件两次——为什么会这样?
删除第二个文件列表的修复:
playlist='PLAYLIST1'
split -a 1 -d -n l/2 $playlist $playlist
cp PLAYLIST10 PLAYLIST
这终于给了我想要的,但一定有更好的方法。
。Sed -e 's@(.)/run/@1n/run/@g' *.m3u这一切都要感谢tripleee
使用sed,而不是bash,并且在文件开始处添加新行。
sed -e 's@/run/@n/run/@g' *.m3u