Supondo que a saída na pergunta é a saída desejada, você pode tentar isso.
awk -F';' 'BEGIN{OFS=",";} NR>1{gsub(/ /,""); print $2,$3,"DATABASES"}' filename | sed -e :a -e '$!N;s/\n/,/;ta'
Provavelmente isso pode ser feito com awk
apenas. Remova a parte sed
se você quiser linhas na mesma linha.
Como o SE parece ter fins educativos, farei o possível para explicar o que cada sinalizador no comando acima faz.
-F';'
# Usa ;
como --field-separator
BEGIN {OFS=",";}
# Esse é um padrão especial que é executado antes de qualquer comando que se segue e sua saída não é influenciada pelo restante do programa. Então temos ORS
ORS
# Como a saída deve incluir uma vírgula ,
, definimos a Output Record Separator
para ter vírgula como um valor. O valor padrão de ORS
é uma nova linha "\n"
NR>1
# Aqui dizemos para pular o primeiro registro. NR
também é uma variável especial reservada que contém o número total de registros de entrada.
gsub()
# É uma função que aceita alguns parâmetros. Se nenhum campo especificado, por exemplo, $2
ou $3
, em seguida, gsub()
function usar o registro inteiro, que é $0
Finalmente, print $2,$3,"DATABASE"
imprimirá os campos especificados e adicionará DATABASE
no final da linha.
print $2,$3
# Aqui usamos vírgula para separar campos. O delimitador padrão FS (Field separator)
é um único espaço em branco ' '
.
Espero que esta breve descrição clarifique um pouco as coisas.