Sed从字符串中删除最后3位数字

时间:2016-11-08 13:21:29

标签: sed

27211;18:05:03479;20161025;0;0;0;0;10991;0;10991;000;0;0;000;1000000;0;0;000;0;0;0;82

;之后的第二个字符串是时间。 gg:mm:sssss:。我只想成为gg:mm:ss:

像这样:

27211;18:05:03;20161025;0;0;0;0;10991;0;10991;000;0;0;000;1000000;0;0;000;0;0;0;82

我尝试使用cut,但在第n次出现角色后删除了所有内容,现在我被卡住了,请帮助。

5 个答案:

答案 0 :(得分:1)

试试这个衬垫:

angular.module('MyApp',['ngMaterial'])

.controller('AppCtrl', function($mdColors) {
  this.color1 = $mdColors.getThemeColor('primary-600');
  this.color2 = $mdColors.getThemeColor('primary-100');
});

它从第2列删除最后3个字符。

使用sed one liner更新

如果你是sed的粉丝:

awk -F';' -v OFS=";" 'sub(/...$/,"",$2)+1' file

答案 1 :(得分:0)

使用sed

sed -r 's/^([^;]+;[^;]+)...;/\1;/' file

(OR)

sed -r 's/^([^;]+;[0-9]{2}:[0-9]{2}:[0-9]{2})...;/\1;/' file

答案 2 :(得分:0)

它也可以是sed 's/(.*)([0-9]{2}\:){2}([0-9]{3})[0-9]*\;(.*)/\1\2\3\4/g'

它不是很干净,但至少对我来说更清楚。

此致

答案 3 :(得分:0)

我为此使用perl:

perl -pe 's/(?<=:\d\d)\d+(?=;)//' file

删除&#34;冒号数字&#34;之间的任何数字。和分号(仅限第一个匹配,不在行中全局)。

如果您想就地编辑文件:perl -i -pe ...

答案 4 :(得分:0)

使用sed:

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

或perl:

perl -pe's/:\d\d\B\K...//' file