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 を使用した 1 つの方法:

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 に答える