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

Sed 从12位数字中删除前导字符,sed,awk,grep,Sed,Awk,Grep,我有一个带有id和编号的文本文件。所有数字应为10位数。在以下示例中,只有第3行是正确的 36000003326|917668001520 36000003359|919005119822 36000003417|9153914209 36000003508|919454102627 如果数字长度为12位,则应删除前2个国家/地区数字。预期结果如下: 36000003326|7668001520 36000003359|9005119822 36000003417|9153914209 360

我有一个带有id和编号的文本文件。所有数字应为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/|/'
使用awk的一种方法:

awk -F"|" 'length($2)>10{$2=substr($2,3);}1' OFS="|" file
使用awk的一种方法:

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

sed -r 's/\|..(.{10})/|\1/'
这个怎么样

sed -r 's/\|..(.{10})/|\1/'
本手册适用于您(GNU-sed):

本手册适用于您(GNU-sed):


@格伦:谢谢你的测试@格伦:谢谢你的测试