使用awk解析文本文件

使用awk解析文本文件

我有一个不断变化的文本文件,其中包含来自 Gmail API 的消息。我需要解析它的内容。我的文本文件包含消息 ID、消息、发件人详细信息和日期:

15335b114b093448(消息 ID)::名称:SINDHUJA,
所需服务:水管工,城市:班加罗尔,电子邮件 ID:[电子邮件受保护], 手机 : 9987654434:: 2016 年 3 月 2 日星期三 04:58:29 +0000::Flipkart(合作伙伴)[电子邮件受保护]:::
15335254a7e5677a::名字:海伦, 所需服务:电工,城市:钦奈,电子邮件 ID:[电子邮件受保护],手机 : 934554434:: ::2016 年 3 月 2 日星期三 07:36:37 +0530 (IST)::印度时报[电子邮件受保护]::::

我该如何解析它?我尝试了代码:

 >>>rawProfiles='''
    15335b114b093448::NAME : SINDHUJA, 
SERVICE REQUIRED: PLUMBER ,CITY :BANGALORE, EMAIL ID : [email protected] ,MOBILE : 9987654434::  Wed, 02 Mar 2016 04:58:29 +0000::Flipkart <[email protected]>:::
    15335254a7e5677a::NAME : HALEN, 
SERVICE REQUIRED: ELECTRICIAN ,CITY :CHENNAI, EMAIL ID : [email protected] ,MOBILE : 934554434:: ::Wed, 2 Mar 2016 07:36:37 +0530 (IST)::The Times of India <[email protected]>::::
    '''
    >>>profilesList=re.split(r'\n{1,}',rawProfiles)

    >>>profilesList =[re.sub(r'\n',' ',profile) for profile in profilesList]

    >>>profilesList =[re.split(r',',profile,maxsplit=2) for profile in profilesList]
    >>>for profile in profilesList:
    print profile

    >>>profilesList =[map(str.strip,profile) for profile in profilesList]
    >>>for profile in profilesList:
    print profile

这给了我一个:nameError re not defined

编辑

代码是Python的。

我的示例输出应该是:

 伙伴       名称服务     城市移动邮箱  
Flipkart SINDHUJA 水管工 班加罗尔 9987654434 [电子邮件受保护]
时代 HALEN 电工钦奈 9345544342 [电子邮件受保护]

答案1

第二行的 Partner 列有一个小问题,但是这个 awk 可以作为您的开始。

BEGIN {
    FS="::";
    OFS="\t";
    print "PARTNER\tNAME\tSERVICE\tCITY\tMOBILE\tEMAIL"
}
{
    split($2,A,"[:,]");
    if ($3 == " ")
    {
        split($5,B,"[:,]");
    }
    else
    {
        split($4,B,"[:,]");
    }

    split(B[1],C,"mail");
    name=A[2];
    service=A[4];
    city=A[6];
    mobile=A[10];
    email=A[8];
    partner=C[1];
    sub("[(]partner[)]", "",partner);

    print partner"\t"name"\t"service"\t"city"\t"mobile"\t"email;
}

出去:

PARTNER NAME    SERVICE CITY    MOBILE  EMAIL
Flipkart     SINDHUJA    PLUMBER    BANGALORE    9987654434  [email protected] 
The Times of India   HALEN   ELECTRICIAN    CHENNAI  934554434   [email protected] 

您必须从 (bash,zsh..)shell 运行它并将其保存为whatever.awk

awk -f whatever.awk file

相关内容