我正在尝试从文件数据中解析出电话号码列。
XiaoLi,lxiao,[email protected],6705462234,Jackson,NC764
NatkinWilliam,wnatkin,[email protected],8044344528,Salem,VA22345
EliziMoe,emoe,[email protected],5208534566,Tempe,AZ85282
MaTa,mta,[email protected],4345667345,Austin,TX91030
DianaCheng,dcheng,[email protected],5203456789,Matitsi,WY4587
JacksonFive,jfive,[email protected],5206564573,Kyenta,AZ85483
AdiSrikanthReddy,sadi1,[email protected],6578904566,Wyo,WS67854
我正在编写一个脚本,该脚本将使用电话号码并重新组织它。我已经能够用
phonm=`awk -F, '{ print $4 }' data3`
单独使用时,我得到的输出
6705462234
8044344528
5208534566
4345667345
5203456789
5206564573
6578904566
问题是我需要将这些数字格式化为###-###-####
所以我用了命令
echo "${phonm:0:3}-${phonm:3:3}-${phonm:6:4}"
当我运行此程序时,我会达到预期的效果。但它只会打印/格式化第一行。
670-546-2234
如何使此命令向下遍历该列?
只需告诉awk
您打印字符串的各部分,并用连字符分隔即可:
awk -F, '{print substr($4,1,3) "-" substr($4,4,3) "-" substr($4,7,4)}' < data3
样本输出:
670-546-2234
804-434-4528
520-853-4566
434-566-7345
520-345-6789
520-656-4573
657-890-4566
得到输出的原因是,将awk的所有输出都保存到一个shell变量中,然后询问该字符串的特定部分。变量本身在其中嵌入了换行符,并且包含所有电话号码,您只需要手工遍历所有电话号码,或者只用awk即可。
$ echo "$phonm" |od -c
0000000 6 7 0 5 4 6 2 2 3 4 \n 8 0 4 4 3
0000020 4 4 5 2 8 \n 5 2 0 8 5 3 4 5 6 6
0000040 \n 4 3 4 5 6 6 7 3 4 5 \n 5 2 0 3
0000060 4 5 6 7 8 9 \n 5 2 0 6 5 6 4 5 7
0000100 3 \n 6 5 7 8 9 0 4 5 6 6 \n
0000115
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句