【发布时间】:2020-02-24 02:17:54
【问题描述】:
我找到了以下 bash 脚本,用于将带有 key:value 信息的文件转换为 CSV 文件:
awk -F ":" -v OFS="," '
BEGIN { print "category","recommenderSubtype", "resource", "matchesPattern", "resource", "value" }
function printline() {
print data["category"], data["recommenderSubtype"], data["resource"], data["matchesPattern"], data["resource"], data["value"]
}
{data[$1] = $2}
NF == 0 {printline(); delete data}
END {printline()}
' file.yaml
但是执行之后,它只转换了第一组数据(只有前6行数据),像这样
category,recommenderSubtype,resource,matchesPattern,resource,value
COST,CHANGE_MACHINE_TYPE,instance-1,f1-micro,instance-1,g1-small
我的原始文件是这样的(1000行以上):
category:COST
recommenderSubtype:CHANGE_MACHINE_TYPE
resource:portal-1
matchesPattern:f1-micro
resource:portal-1
value:g1-small
category:PERFORMANCE
recommenderSubtype:CHANGE_MACHINE_TYPE
resource:old-3
matchesPattern:n1-standard-4
resource:old-3
value:n1-highmem-2
我缺少什么命令吗?
【问题讨论】:
-
这可能根本不是 bash 脚本而是 awk 脚本吗?