#!/bin/bash
function labels2() {
awk '
/[0-9]/{
print substr($3,length($3)-11), $3
}' [email protected] | /bin/sort -u | awk '{print "BUILD: " NR, $2}'
}
function labels() {
awk '
/[0-9]/{
BL[$3] = substr($3,length($3)-11)
}
END {
asort(BL)
for (i in BL) {
print i, BL[i]
}
}' [email protected]
}
labels [email protected]
for a in [email protected]
do
labels [email protected] | gawk '
/BUILD:/ {
BUILD[$2] = $3
BUILDCNT ++
next
}
/[0-9]/ {
DATEd[$3] = $1
TIMEd[$3] = $2
MODULESd[$3] = $4
CASESd[$3] = $5
FAILEDd[$3] = $6
COVERd[$3] = $7
LOCd[$3] = $8
}
END {
SUBSYSTEM=substr(FILENAME, 1, length(FILENAME)-7)
LABEL= "\"" toupper(SUBSYSTEM) "\""
print "#{"
print "\"buildnames\": {"
print " \"label\": \"buildnames\","
print " \"data\": ["
print " ]"
print " }"
print "};"
print "#{"
print "\"subsystem\": " LABEL ","
print " \"date\": {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (DATEd[B]) { print " [" i ", \"" DATEd[B] "\"],"}
}
print " ]"
print " },"
print " \"time\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (TIMEd[B]) { print " [" i ", \"" TIMEd[B] "\"],"}
}
print " ]"
print " },"
print " \"modules\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (MODULESd[B]) { print " [" i ", \"" MODULESd[B] "\"],"}
}
print " ]"
print " },"
print " \"cases\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (MODULESd[B]) { print " [" i ", \"" MODULESd[B] "\"],"}
}
print " ]"
print " },"
print " \"failed\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (FAILEDd[B]) { print " [" i ", \"" FAILEDd[B] "\"],"}
}
print " ]"
print " },"
print " \"cover\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (COVERd[B]) { print " [" i ", \"" COVERd[B] "\"],"}
}
print " ]"
print " },"
print " \"loc\" : {"
print " \"label\": " LABEL ","
print " \"data\": ["
for (i = 0 ; i <= BUILDCNT; i ++) {
B=BUILD[i]
if (LOCd[B]) { print " [" i ", \"" LOCd[B] "\"],"}
}
print " ]"
print " }"
print " };"
}
' - $a
done
這個腳本,它提供了以下輸出時「feeded」與當前的文本文件gps.txt
2011-01-22 22:12 P16A22_110114072915 22 1312 75 13.55 1399
_
1 110114072915
#{
"buildnames": {
"label": "buildnames",
"data": [
]
}
};
#{
"subsystem": "GPS",
"date": {
"label": "GPS",
"data": [
[0, "1"],
]
},
"time" : {
"label": "GPS",
"data": [
[0, "110114072915"],
]
},
"modules" : {
"label": "GPS",
"data": [
]
},
"cases" : {
"label": "GPS",
"data": [
]
},
"failed" : {
"label": "GPS",
"data": [
]
},
"cover" : {
"label": "GPS",
"data": [
]
},
"loc" : {
"label": "GPS",
"data": [
]
}
};
我想要的樣子是這樣的
#{
"buildnames": {
"label": "buildnames",
"data": [[0,"BUILD: 1 P16A22_110114072915"]
]
}
};
#{
"subsystem": "GPS",
"date": {
"label": "GPS",
"data": [
[0, "2011-01-22"],
]
},
"time" : {
"label": "GPS",
"data": [
[0, "22:12"],
]
},
"modules" : {
"label": "GPS",
"data": [[0,22]
]
},
"cases" : {
"label": "GPS",
"data": [[0,1312]
]
},
"failed" : {
"label": "GPS",
"data": [[0,75]
]
},
"cover" : {
"label": "GPS",
"data": [[0,13.55]
]
},
"loc" : {
"label": "GPS",
"data": [[0,1399]
]
}
};
所以把這個問題分解成子問題
爲什麼行
1 110114072915
在頂部,我該如何刪除它?我如何使用功能
labels2()
,使得從它(BUILD: 1 P16A22_110114072915)
輸出會在buildnames
這樣"buildnames": { "label": "buildnames", "data": [[0,"**BUILD: 1 P16A22_110114072915**"] ] }
這是最後一個問題:爲什麼不這項工作
MODULESd[$3] = $4
,CASESd[$3] = $5
等......當我循環並打印出來時,它就變成了什麼。
請注意這裏,該文本文件gps.txt
將不斷擴大,因此,在未來它可能是50行,這將是一件好事,如果sollution仍然會工作=)
我知道這成了很多文本,我爲此道歉,而且我可能無法就所有問題得到答案,但是如果您可能有一個想法如何實現其中的任何一個,我會更加高興,因爲我目前被卡住了並不知道如何去做我想做的事情。不幸的是,這種做法是我唯一的選擇。
感謝你的努力=)
我幾乎不知道你在問什麼。 – zellio
我試圖將使用bash腳本將struckture「Date Time Build Modules cases failed cover loc」中的文本文件轉換爲JSON到JSON中,但遇到了麻煩 – johannes
這是一個非常具體的問題,並且包含所有該文本並且幾乎沒有任何有關的知識'gps.txt'很難說明這裏出了什麼問題。我建議你把這個程序分解成幾部分,看你的個人功能是否正常。這是一個非常長的調試過程,您必須自己做。 :) –