我在一个文件中有以下几行
$ cat test.txt
69|1074330570|1,sip:+121345633210x3Bverstat=TN-Validation-Passed|tel:+12134565534|0
69|1077822111|2,;tel:+2223120011~sip:+2223120051@vzpps.com;|sip:+13123120022@vzpps.com|0
69|1077988012|1,sip:+121510016070x3Bverstat=TN-Validation-Passed|tel:+136965339510x3Bnpd|0
我想替换文件中的第三和第四列只是电话号码如下:
69|1074330570|2134563321|2134565534|0
69|1077822111|2223120011|3123120022|0
69|1077988012|2151001607|3696533951|0
好的方面是所有文件在第三列和第四列都有一个‘+’.现在困难的部分是,有时我们会得到第一行第三列(121345633210)中注意到的11位数字,有时‘+’后面没有‘1’.因此,如果加号后面有1,则排除1.否则,从‘+’符号后开始长度.同样,如果有11个数字,只有10个子字符串.另外,如果有超过1个数字,比如第2行,我只需要拿起‘+’符号后面的第一个数字,就像2223120011,而不是2223120051.
我try 了以下几种方法
awk -F"|" 'BEGIN {FS="+"}{print substr($3,2,10)}' test.txt
但它为第二行提供的值不正确,因为它需要在‘+’符号之后开始.