Tenho o texto abaixo:
roledetails="name: CLD:HYB_Y_BASIS_ADMIN
description: Basis Admin
readOnly: <null>
roleReferences:
- description: desc1
name: AuthGroup_Administrator
roleTemplateAppId: it!b2455
roleTemplateName: AuthGroup_Administrator
- description: Desc2
name: AuthGroup_BusinessExpert
roleTemplateAppId: it!b2455
roleTemplateName: AuthGroup_BusinessExpert
"
Gosto de converter para arquivo .csv no formato abaixo. Como farei isso usando AWK?
Collection Role Desc,Role_Name,App_Id, Role_Template
CLD:HYB_Y_BASIS_ADMIN, desc1, AuthGroup_Administrator,it!b2455,AuthGroup_Administrator
CLD:HYB_Y_BASIS_ADMIN, desc2, AuthGroup_BusinessExpert,it!b2455,AuthGroup_BusinessExpert
Tentei o código abaixo, mas não funcionou:
declare fullfilepath=$(pwd)"/test1.csv"
awk -F':[[:space:]]+' -v fullfilepath="$fullfilepath" 'NR==1{ # When on Line 1
a=$2;cnt=0 # Set a and cnt vars
}
/^-/{ # When line starts with -
rta[cnt]=$2; getline; # Add role template app ID to rta array
rtn[cnt]=$2; getline; # Add role template name to rtn array
n[cnt]=$2;cnt++ # Add name to n array
}
END{ # When the file processing is over
for(i=0;i<cnt;i++) { # Iterate over the found values and...
#print a","n[i]","rtn[i]","rta[i] # print them
printf a","n[i]","rtn[i]","rta[i] "\n" >> fullfilepath # print them
}
}' <<< "$roledetails"
Solução em TXR
Da variável usando
<<<
redirecionamento Bash:Código:
Premissas:
rollReferences
bloco tem os mesmos 5 campos e o último campo é sempreroleTemplateName
Uma
awk
ideia:NOTA: isso depende muito do formato exato dos dados de entrada
Isso gera: