我正在尝试将从一种格式找到的时间码更改为另一种格式,基本上是删除文件末尾的毫秒并更新它。这是为了从转录时间码软件中删除额外的毫秒数,并使其看起来非常适合客户端文件。
输入看起来像这样:
memory_order_relaxed
所以我正在尝试使用grep来匹配时间码并使用下面的表达式。
00:50:34.00>INTERVIEWER
Why was it ............... script?
00:50:35.13>JOHN DOE
Because of the quality.
输出如下:
grep [0-9][0-9][:][0-9][0-9][:][0-9][0-9]\.[0-9][0-9] -P -o transcriptionFile.txt
所以现在我正在尝试使用时间码并使用更新的值更新文件,如:
00:50:34.00
00:50:35.13
我该怎么做?我应该使用管道将其推送到sed,以便我可以更新文件中的值吗?
我还尝试使用sed和以下命令:
00:50:34
00:50:35
我得到输出但是在我的RegExp中放入时间码应该是的位置。有任何想法吗?另外,在更新文件之前,如何修剪时间码最右侧的最后3位数?
非常感谢任何提示或建议。
谢谢: - )
答案 0 :(得分:1)
使用GNU sed:
$ sed -r 's/^([0-9]{2}:[0-9]{2}:[0-9]{2})\>\.[0-9]{2}/\1/' transcriptionFile.txt
00:50:34>INTERVIEWER
Why was it ............... script?
00:50:35>JOHN DOE
Because of the quality.
要编辑文件,请添加-i
选项:
sed -r -i 's/^([0-9]{2}:[0-9]{2}:[0-9]{2})\>\.[0-9]{2}/\1/' transcriptionFile.txt
<强>解释强>
[0-9]{2}:
匹配每两位数后跟:
。使用括号捕获所有三个出现。\>\.[0-9]{2}
匹配>
后跟一个点和两位数字。\1
,匹配先前模式的字符串将替换为捕获的字符(时间码不带毫秒)。