我有一个看起来像的文件:
LOG_FILE:
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
请帮忙。提前谢谢。
答案 0 :(得分: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
}
答案 1 :(得分:0)
您可以尝试这样使用:
awk -vRS="" -vOFS=',' '$1=$1' file