sed中的正则表达式(cmd.exe中的gnuwin32)

时间:2015-08-27 15:27:48

标签: regex sed expression

我想删除或替换数据:":20.08.2015"

数据样本:

: 20.08.2015 02:39:26 :  ''    0  1 
: 20.08.2015 02:39:26 :  ''    0  1 
: 20.08.2015 02:39:26 :  ''    0  1 
: 20.08.2015 02:39:26 :  ''    0  1 
: 20.08.2015 02:39:26 :  ''    0  1 
: 20.08.2015 02:39:26 :  ''    1  0 
: 20.08.2015 02:39:27 :  ''    1  0 
: 20.08.2015 02:39:27 :  ''    1  0 
: 20.08.2015 02:39:27 :  ''    0  1 
: 20.08.2015 02:39:27 :  ''    1  0 
: 20.08.2015 02:39:27 :  ''    0  1 
: 20.08.2015 02:39:27 :  ''    0  1 
: 20.08.2015 02:39:30 :  ''    1  0 
: 20.08.2015 02:39:30 :  ''    0  1 
: 20.08.2015 02:39:31 :  ''    1  0 
更换后应该是:

02:39:26 :  ''    0  1
02:39:26 :  ''    0  1
02:39:26 :  ''    0  1
02:39:26 :  ''    0  1
02:39:26 :  ''    0  1
02:39:26 :  ''    1  0
02:39:27 :  ''    1  0
02:39:27 :  ''    1  0
02:39:27 :  ''    0  1
02:39:27 :  ''    1  0
02:39:27 :  ''    0  1
02:39:27 :  ''    0  1
02:39:30 :  ''    1  0

在pspad中我可以用表达式" ^(。*?)。([0-9] +?)"但是在cmd中它不起作用。

我在特殊字符前添加了转义字符。

我的尝试是:" sed -i "s/(.*?).([0-9]\+?\ )//g" file.log

出了什么问题?

3 个答案:

答案 0 :(得分:0)

sed -i 's/^: 20\.08\.2015 //' file.log

不确定-i在gnuwin中工作(normaly GNU没问题)

如果日期值不完全是20.08.2015但格式相同

sed -i 's/^: [0-3][0-9]\.[01][0-9]\.[12][09][0-9]\{2\} //' file.log

不要忘记. 任何字符而不是所以逃避它

答案 1 :(得分:0)

试试这个:

sed -i 's/: [0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{4\} //' file.log

表达式中的问题是数字上的延迟匹配(+?)......这是not supported by sed

答案 2 :(得分:0)

所以,伙计们你们很亲密,这对我有用:

sed -i "s/: [0-3][0-9]\.[01][0-9]\.[12][09][0-9]\{2\} //g" file.log
谢谢你!