Resultado de AWK em um linha

1. Resultado de AWK em um linha

Leandro Boldrini Acosta
leandroboldrini

(usa Slackware)

Enviado em 04/04/2020 - 16:28h

Salve, salve galera! Não sou nenhum expert em shell script, por isso minha duvida noob.
awk -F';' '{ print $1 }' 1.csv 

O comando acima me retorna os valores (usuarios) que preciso desta forma:
fulano.x
ciclano.y
bozo.k

Gostaria que a saida fosse em uma linha e os valores separados por virgula
fulano.x,ciclano.y,bozo.k


Alguma sugestão de como fazer isso?

Grato desde já!


  


2. Re: Resultado de AWK em um linha

hauck
hauck

(usa Nenhuma)

Enviado em 04/04/2020 - 17:29h

Com o sed você pode deixar o resultado em uma linha.
Qualquer dúvida fale.

dados=$(awk -F';' '{ print $1 }' 1.csv ) && echo $dados 
dados=$(awk -F';' '{ print $1 }' 1.csv ) && echo $dados | sed -n '1p'



3. Re: Resultado de AWK em um linha

Leandro Boldrini Acosta
leandroboldrini

(usa Slackware)

Enviado em 04/04/2020 - 18:23h

hauck escreveu:

Com o sed você pode deixar o resultado em uma linha.
Qualquer dúvida fale.

dados=$(awk -F';' '{ print $1 }' 1.csv ) && echo $dados 
dados=$(awk -F';' '{ print $1 }' 1.csv ) && echo $dados | sed -n '1p'


Mano, primeiramente obrigado por responder.
Eu realizei o teste com a sua resposta e o resultado me retorna somente o primeiro valor ( no exemplo que dei acima é equivalente a estar mostrando somente fulano.x ) e como mencionei, preciso dos resultados separados por ",".
Todavia, do meu jeito, mesmo nao sendo o melhor (acredito) consegui o resultado, concatenando a string assim:

awk -F';' '{ usuarios = usuarios  $1","  } END { print usuarios }' 1.csv 





4. Re: Resultado de AWK em um linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/04/2020 - 20:41h

leandroboldrini escreveu:

Salve, salve galera! Não sou nenhum expert em shell script, por isso minha duvida noob.
awk -F';' '{ print $1 }' 1.csv 

O comando acima me retorna os valores (usuarios) que preciso desta forma:
fulano.x
ciclano.y
bozo.k

Gostaria que a saida fosse em uma linha e os valores separados por virgula
fulano.x,ciclano.y,bozo.k


Alguma sugestão de como fazer isso?

Grato desde já!

Boa noite Leandro.
No awk, "set o ORS", para o separador desejado.
Exemplo:
awk -F":" '{ORS=",";print $1}' /etc/passwd
root,daemon,bin,sys,sync,games,man,lp,mail,news,uucp,proxy,www-data,backup,list,irc,gnats,nobody,_apt,systemd-timesync,systemd-network,systemd-resolve,messagebus,pulse,uuidd,systemd-coredump,adminq,
Ou, use o printf:
awk -F":" '{printf "%s," ,$1}' /etc/passwd
Se é necessário tirar a virgula do final, use o sed:
awk -F":" '{printf "%s," ,$1}' /etc/passwd|sed 's/\,$//'


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts