我有一个包含时间戳的行的文件,这是一个例子:
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]/'
不幸的是,这不起作用。
答案 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
查看整个数据,这将删除第三组非空格字符的最后两个非空格字符。