Como transformar o resultado do awk em lista? [RESOLVIDO]

1. Como transformar o resultado do awk em lista? [RESOLVIDO]

Nameless
theThux

(usa Debian)

Enviado em 01/04/2017 - 16:06h

Bom meus amigos, tenho a seguinte dúvida, mas primeiro vou lhes falar o que tenho em mãos.

Tenho um script em que uso o awk, ($1), tendo em vista de que ele vai pegar o 1° fileira do arquivo, quero transformar essas informações em "lista".
Exemplo:

Arquivo: /root/arq.txt

Michel
Darlan
Oliveira
Silva

awk '{print $1}' /root/arq

Irá retornar todos os nomes certo? Mas como faço para que ele retorne assim:

Michel, Darlan, Oliveira, Silva ...??

Grato

- Caso não tenha entendido, é só perguntar a parte que não entendeu que eu tentarei explicar melhor.


  


2. MELHOR RESPOSTA

José da Silva
zenull

(usa Outra)

Enviado em 01/04/2017 - 16:34h

lipinho0 escreveu:

Bom meus amigos, tenho a seguinte dúvida, mas primeiro vou lhes falar o que tenho em mãos.

Tenho um script em que uso o awk, ($1), tendo em vista de que ele vai pegar o 1° fileira do arquivo, quero transformar essas informações em "lista".
Exemplo:

Arquivo: /root/arq.txt

Michel
Darlan
Oliveira
Silva

awk '{print $1}' /root/arq

Irá retornar todos os nomes certo? Mas como faço para que ele retorne assim:

Michel, Darlan, Oliveira, Silva ...??

Grato

- Caso não tenha entendido, é só perguntar a parte que não entendeu que eu tentarei explicar melhor.

Usando apenas awk deve ter um jeito simples, mas não sei (nem tentei) como fazer. Mas dá pra fazer usando o sed:

sed 's/$/texto incluido/' --- inclui texto no final de cada linha.
sed ':a;$!N;s/\n//;ta;' --- coloca todas as linhas em uma só.

Ficaria assim:

awk '{print $1}' /root/arq | sed 's/$/, /' | sed ':a;$!N;s/\n//;ta;'


3. Re: Como transformar o resultado do awk em lista? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/04/2017 - 16:49h

lipinho0 escreveu:

Bom meus amigos, tenho a seguinte dúvida, mas primeiro vou lhes falar o que tenho em mãos.

Tenho um script em que uso o awk, ($1), tendo em vista de que ele vai pegar o 1° fileira do arquivo, quero transformar essas informações em "lista".
Exemplo:

Arquivo: /root/arq.txt

Michel
Darlan
Oliveira
Silva

awk '{print $1}' /root/arq

Irá retornar todos os nomes certo? Mas como faço para que ele retorne assim:

Michel, Darlan, Oliveira, Silva ...??

Grato

- Caso não tenha entendido, é só perguntar a parte que não entendeu que eu tentarei explicar melhor.


Boa tarde lipinho.
Segue sugestão:
awk '$0 != "" {ORS=", ";print $0}' nomes |sed 's/, $/\n/'
Explicando:
Se $0 é diferente de "vazio" print $0
ORS = Troca o separador de registro que anteriormente era "\n" por ", "
sed 's/, $/\n/' = Troca a ultima ", " por "\n"

Outra opção:
cat nomes |xargs|sed 's/ /, /g'

É isso:

Se a dúvida foi esclarecida, marque o tópico como resolvido . . .
Se minha resposta foi satisfatória e esclarecedora . . . MARQUE-A como a MELHOR . . .
Dessa forma sou pontuado, o que incentiva a continuar compartilhando o conhecimento....

att.:
marcelo oliver


4. Re: Como transformar o resultado do awk em lista? [RESOLVIDO]

Nameless
theThux

(usa Debian)

Enviado em 01/04/2017 - 17:17h


Usando apenas awk deve ter um jeito simples, mas não sei (nem tentei) como fazer. Mas dá pra fazer usando o sed:

sed 's/$/texto incluido/' --- inclui texto no final de cada linha.
sed ':a;$!N;s/\n//;ta;' --- coloca todas as linhas em uma só.

Ficaria assim:

awk '{print $1}' /root/arq | sed 's/$/, /' | sed ':a;$!N;s/\n//;ta;'


Cara, atendeu as minhas necessidades, muito obrigado.


5. Obrigado

Nameless
theThux

(usa Debian)

Enviado em 01/04/2017 - 17:21h



Boa tarde lipinho.
Segue sugestão:
awk '$0 != "" {ORS=", ";print $0}' nomes |sed 's/, $/\n/'
Explicando:
Se $0 é diferente de "vazio" print $0
ORS = Troca o separador de registro que anteriormente era "\n" por ", "
sed 's/, $/\n/' = Troca a ultima ", " por "\n"

Outra opção:
cat nomes |xargs|sed 's/ /, /g'

É isso:

Se a dúvida foi esclarecida, marque o tópico como resolvido . . .
Se minha resposta foi satisfatória e esclarecedora . . . MARQUE-A como a MELHOR . . .
Dessa forma sou pontuado, o que incentiva a continuar compartilhando o conhecimento....

att.:
marcelo oliver


Obrigado Marcelo, sua solução é muito boa e ainda me ensinou mais um pouco sobre manipular strings.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts