文件中的替换数字

时间:2015-11-08 06:04:37

标签: bash sed scripting

我有一个包含时间戳的行的文件,这是一个例子:

Event   IND200G5200Z5        20151104-030035        20151104-030000+0300    C      5280    10      20151104-025958+0300    OCP      5281    7
Event   IND207X3200Z5        20151104-065436        20151104-030003+0300    UOF      5280    9       20151104-025958+0300    OCP      5281    7

我想删除第三列中的最后两位数字来获取此信息:

Event   IND200G5200Z5        20151104-0300        20151104-030000+0300    C      5280    10      20151104-025958+0300    OCP      5281    7
Event   IND207X3200Z5        20151104-0654        20151104-030003+0300    UOF      5280    9       20151104-025958+0300    OCP      5281    7

有很多行有不同的时间戳,我最后只需要删除2个。我不想使用awk,我需要在同一个文件中保存更改。我尝试过这样的事情:

sed -i 's/d{8}[-]d{6}/d{8}[-]d{4}/'
sed -i 's/\-[0-9][0-9][0-9]/[0-9][0-9][0-9][0-9]/'

不幸的是,这不起作用。

2 个答案:

答案 0 :(得分:0)

sed 's/-\([0-9]\{4\}\)[0-9]\{2\}/\-\1/' file

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -ri 's/(\S+)\S\S/\1/3' file

查看整个数据,这将删除第三组非空格字符的最后两个非空格字符。