这按预期工作:
输入文件 src.txt:
ffmpeg -i uno.3gp
ffmpeg -i dos.3gp
ffmpeg -i tres.3gp
命令:
sed 's/-i .*\./XXX/' <src.txt
结果如预期:
ffmpeg XXX3gp
ffmpeg XXX3gp
ffmpeg XXX3gp
那么为什么这些不能按预期工作:
命令:
sed 's/-i (.*)\./XXX/' <src.txt
预期的:
ffmpeg XXX3gp
ffmpeg XXX3gp
ffmpeg XXX3gp
实际结果:
ffmpeg -i uno.3gp
ffmpeg -i dos.3gp
ffmpeg -i tres.3gp
命令:
sed 's/-i (.*)\.3gp/\1.mp3/' <src.txt
预期的:
ffmpeg uno.mp3
ffmpeg dos.mp3
ffmpeg tres.mp3
实际结果
sed: -e expression #1, char 18: invalid reference \1 on `s' command's RHS
括号似乎不适用于分组,但我发现的所有教程和示例似乎都认为它们应该......