使用Sed移除时间戳

时间:2017-02-19 23:51:25

标签: bash sed

我在网上发现了几个例子..但我不能 找到一个可行的组合,作为sed的synx 是非常棘手的,如果你能请点我进来 正确的方向我会非常感激..

以下是我要从文件中删除的时间戳

00:02:06.580 - > 00:02:07.380

这是我已经尝试过的

cat sometextfile.txt | sed -r 's /\[0-9]{2}:[0-9]{2}:[0-9]{2}\/ g'

但我一直得到并且错误:sed:-e expression#1,char 34:unterminated`s'command

谢谢!

1 个答案:

答案 0 :(得分:1)

语法为s/ 要替换的内容 / /替换它的内容。你错过了第二部分。即使你想要什么也不用,你需要全部三条斜线;只是不要在最后两个之间放任何东西。实际上,您只有一个斜杠,因为第二个斜杠引用\,意味着sed会将其视为表达式的一部分,并在输入中查找文字/

正则表达式的开头也是错误的。 \[0-9]{2}匹配文字字符串[0-9,后跟正好两个右括号(]])。如果要匹配“正好两位数”,请删除初始反斜杠(\)。

此外,您永远不需要cat filename |;你可以< filename 。在这种特定情况下,sed采用文件名参数,因此您也可以不使用<

所以它应该是这样的;

sed -E 's/[0-9]{2}:[0-9]{2}:[0-9]{2}//' sometextfile.txt 

(我使用-E,因为它比-r更容易移植,这是一个GNU主义。)

除非每行有多个时间戳,否则最后不需要g