使用 Sed/Awk 修复错误的 SRT 文件

使用 Sed/Awk 修复错误的 SRT 文件

最近我下载了一些格式错误的SRT文件,时间格式混乱,

HH:MM:SS:XXX

而它应该是

HH:MM:SS,XXX

现在的主要问题是将每个时间行中的第三个冒号替换为逗号,格式为

HH:MM:SS,XXX --> HH:MM:SS,XX

有人能推荐一个 sed/awk 脚本来修复整个文件中的这个问题吗?我试过了

sed 's/:/,/3;s/:/,/5' file

但似乎没起作用

编辑: 回答了我自己的问题,忘记了所有关于反向引用的内容

sed -E "s/([0-9][0-9])(:)([0-9][0-9][0-9])/\1,\3/g" 

答案1

告诉 sed 替换后面不再有冒号的冒号:

sed 's/:\([^:]\+\)$/,\1/'

答案2

替换包含以下内容的行中第三和第六个出现的冒号-->

sed '/-->/ { s/:/,/6; s/:/,/3 }'

反向执行以保持发生顺序。

答案3

将与冒号+数字+行尾匹配的所有内容替换为命令+找到的内容

sed  's/:([0-9]*)$/,\1/' file

相关内容