我在网上发现了几个例子..但我不能 找到一个可行的组合,作为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
谢谢!
答案 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
。