最近我下载了一些格式错误的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