sed:仅替换部分字符串

时间:2018-04-07 13:40:29

标签: sed

我有一个简单的歌曲文件播放列表:

1003 James Brown - The Boss Unknown Artist.mp3
1004 James Brown - Slaughters Theme Unknown Artist.mp3
1005 James Brown - Payback(1) Unknown Artist.mp3
... 

我希望它们采用以下格式:

1003 James_Brown_-_The_Boss_Unknown_Artist.mp3
1004 James_Brown_-_Slaughters_Theme_Unknown_Artist.mp3
...

请注意,前面数字后面的空格不会被替换。我有以下简单的sed脚本:

sed "s/ /_/g" 

但是这也取代了数字之后的空格。我知道如何形成捕获组,但这也无济于事。我怎样才能说服sed只将替换应用于输入字符串的一部分,而不是整个字符串?

1 个答案:

答案 0 :(得分:0)

你可以做到

sed 's/ /_/g; s/_/ /'

即。首先将所有空格转换为下划线,然后将第一个下划线转回空间。