2017-02-19 45 views
0

我已经找到了几个例子,在线..但我不能 发现,将工作,作为synx的sed的 组合是非常棘手的,如果你能请您指出我 正确的方向我将非常感激..删除时间戳使用sed

这里是时间戳,我想从文件中删除

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表达#1,炭34:无端接`s'的命令

谢谢!

回答

1

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

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

此外,你永远不需要做cat文件名|;你可以做<文件名。在这个特定的情况下,sed需要一个文件名参数,所以你也可以不使用<

所以它应该是这样的;

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

(我用-E,因为它更便携比-r,这是一个GNUism。)

你不需要在年底g除非有每行一个以上的时间戳。

+0

感谢马克..我能够删除约一半的字符串与建议的命令..这应该足以让我开始,再次感谢! – Philcinbox

+0

所以这就是我最后的结果.. – Philcinbox

+0

cat file.txt | sed -E'/ [0-9] {2}:[0-9] {2}:[0-9] {2}。[0-999] {3} // g'> file_nostring.txt – Philcinbox