2013-03-18 2 views
0

У меня есть текстовый файл с идентификатором и номером. Ожидается, что все цифры будут составлять 10 цифр. В следующем примере только 3-я строка верна.удалить ведущие символы из 12-значных чисел

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

Если число составляет 12 цифр, следует удалить первые две цифры страны. Ожидаемые результаты заключаются в следующем:

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

Следующая СЕПГ работает, но он не проверяет, если целевая запись 10 цифр или длиной 12 цифр.

sed 's/|91/|/' 

ответ

3

Как насчет этого?

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

@glenn Спасибо за тестирование! :) –

1

Один из способов, используя AWK:

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

Это migh работать для вас (GNU СЭД):

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