从12位数字中删除前导字符

时间:2013-03-18 07:37:39

标签: sed awk grep

我有一个包含id和number的文本文件。所有数字预计都是10位数。在以下示例中,只有第3行是正确的。

36000003326|917668001520
36000003359|919005119822
36000003417|9153914209
36000003508|919454102627

如果数字长度为12位,则应删除前2个国家/地区的数字。预期结果如下:

36000003326|7668001520
36000003359|9005119822
36000003417|9153914209
36000003508|9454102627

以下sed正在运行,但它不会检查目标条目是10位数还是12位数。

sed 's/|91/|/'

3 个答案:

答案 0 :(得分:3)

这个怎么样?

sed -r 's/\|..(.{10})/|\1/'

答案 1 :(得分:1)

使用awk的一种方式:

awk -F"|" 'length($2)>10{$2=substr($2,3);}1' OFS="|" file

答案 2 :(得分:0)

这对你很重要(GNU sed):

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