我知道你可以使用字段分隔符来分解AWK中的字段,但是我对没有任何分隔符的字符串有疑问。我需要处理以下数据,我不知道如何开始:
RyanWehe989987412rwehe@asu.edu2025550126CO2001BlakeStDenver80205
JosephLee605497184josephl@mailinator.com3035550103CO5986BudweiserWayAlamosa81101
AmyJohnson783333251amyj@mailinator.com6515550164MN14N5thStMinneapolis55403
DanielJEverhard314849866everhard@asu.edu5059358554NM8830JohnsonRdAlbuquerque87122
PhilipEPeterson325764011peterson@asu.edu4561238888WA542468thAveLacey98513
MattVNulk124085733nulk@asu.edu2093865442KSManhattanStRiley87512
BrandonTLyons123456123btlyons1@asu.edu5755595459AZ635WElmStMesa85212
RogerATurtle983421567rat@gmail.com8587754321IA3400SWIslanDrdDesmoines50021
MarcJWhiz745629754marcwhiz76@yahoo.com6195323200CA215NCollegeGroveWaySandiego91210
我想将原始数据格式化为:
Ryan Wehe, 989-98-7412
2001 Blake St
Denver, CO 80205
wehe@asu.edu
(202) 555-0126
Joseph Lee, 605-49-7184
5986 Budweiser Way
Alamosa, CO 81101
josephl@mailinator.com
(303) 555-0103
AmyJohnson, 783-33-3251
14 N 5th St
Minneapolis, MN 55403
amyj@mailinator.com
(651) 555-0164
答案 0 :(得分:2)
据我所知,Awk没有为使用捕获组定义字段分隔符提供便利。
考虑到这一点,我认为快速破解可能是你最好的选择:
<rdlt version="1.5" xmlns:rdlt="http://www.rdlt.org" xmlns="http://www.rdlt.org">
<created>2016-02-18T15:36:29.326+00:00</created>
<updated>2016-02-18T15:36:29.326+00:00</updated>
</rdlt>
返回此内容:
cat addresses.txt | perl -ne '/([A-Z][[:lower:]]*)([A-Z]*[[:lower:]]*)([0-9]{9})(.*?\.\w{2,3})([0-9]{10})(.*?)([0-9]{5})/ && print "$1 $2 $3 $4 $5 $6\n"'
你的答案使用两种格式,所以我不确定你是否需要分开名字(即Ryan Wehe而不是RyanWehe),将其调整为相当严格。