0

我有一个带有 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/|/'
4

3 回答 3

3

这个怎么样?

sed -r 's/\|..(.{10})/|\1/'
于 2013-03-18T07:54:11.397 回答
1

使用 awk 的一种方法:

awk -F"|" 'length($2)>10{$2=substr($2,3);}1' OFS="|" file
于 2013-03-18T07:47:57.903 回答
0

这可能对你有用(GNU sed):

sed -r 's/[0-9]{2}([0-9]{10})$/\1/' file
于 2013-03-18T13:15:15.733 回答