これは期待どおりに機能します。
入力ファイル 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
括弧はグループ化には機能していないようですが、私が見つけたすべてのチュートリアルと例は、それらが必要であると想定しているようです...