1

我有一个看起来像的文件:

日志文件:

PROFILE INDEX                    10

PROFILE NAME                Profile_name1

PLMN NAME         PLMN         PLMN NAME         PLMN      
                  INDEX  ALLOWED                     INDEX  ALLOWED

Name1              2       NO        name3             3     NO        
name2              4       NO        name4             5     NO        

PROFILE INDEX                    11
PROFILE NAME                Profile_name2

PLMN NAME         PLMN         PLMN NAME         PLMN      
                  INDEX  ALLOWED                     INDEX  ALLOWED

Name5              2       NO        name3             7     NO        
name6              4       NO        name4             8     NO   

我想将其转换为 CSV。

需要输出:

Pofile Index,Profile Name,PLMN_ Name,PLMN_INDEX,Allowed
10, Pofile_name1,   Name1,      2,  no
10, Pofile_name1,   Name3,      3,  NO
10, Pofile_name1,   Name4,      5,  NO
10, Pofile_name1,   Name2,      4,  no

请帮忙。提前致谢。

4

2 回答 2

1

尝试

awk -f convert.awk input.txt

input.txt你的输入文件在哪里,convert.awk

BEGIN {
    OFS=", "
    print "Profile Index", "Profile Name", "PLMN_Name", "PLMN_Index", "Allowed"
}

/^PROFILE INDEX/ {
    ind=$3
    next;
}
/^PROFILE NAME/ {
    sub(/^PROFILE NAME/,"")
    name=$0
    next
}

/^PLMN NAME/ {
    getline;    getline
    d=1; next
}

d==1 {
    pname[1]=$1; pind[1]=$2; all[1]=$3;
    pname[3]=$4; pind[3]=$5; all[3]=$6;
    d++;     next
}
d==2 {
    pname[2]=$1; pind[2]=$2; all[2]=$3;
    pname[4]=$4; pind[4]=$5; all[4]=$6;
    for (i=1; i<=4; i++) {
        print ind, name, pname[i], pind[i], all[i]
    }
    d=0;      next
}
于 2013-10-15T15:48:39.273 回答
0

你可以尝试这样使用:

awk -vRS="" -vOFS=',' '$1=$1' file
于 2013-10-15T15:15:09.033 回答