|
From: | Julio C. Neves |
Subject: | Re: [shell-script] Re: Script para Pegar nomes num arquiv o TXT e formatar a saída usando FOR |
Date: | Wed, 5 Sep 2018 11:43:51 -0300 |
Já que eu falei no IFS, deixa eu pegar uma carona e mostrar um belo macete. Suponha que você tenha uma variável chamada Frutas que tem o seguinte conteúdo:
$ echo $Frutas
Pera^Uva^Maçã
Para separar rapidamente os campos sem o uso do cut ou de qualquer outro artifício, basta fazer:
$ IFS=^
$ set $Frutas
$ echo $1
Pera
$ echo $2
Uva
$ echo $3
Maçã
Como pudemos ver, quando se usa o set $Frutas, os parâmetros posicionais recebem os campos da variável Frutas, separados pelo IFS, assumindo cada um o seu lugar correspondente à sua colocação na variável.
Ou ainda:
$ set $(echo 10.11.12.13 | tr . ' ')
$ echo $2^$4
11^13
Outro macete irritantemente legal e simples, porém usando o comando read que veremos no capítulo seguinte.
Primeiro caso, com separador de campos que esteja no IFS:
$ read CoisaLinda1 CoisaLinda2 CoisaLinda3 <<< "Marina Neves Biasoli"
$ echo $CoisaLinda1
Marina
$ echo $CoisaLinda2
Neves
$ echo $CoisaLinda3
Biasoli
Segundo caso, com separador de campos que não esteja no IFS:
$ IFS=+ read saudades1 saudades2 saudades3 <<< Hedy+Coutinho+Neves
$ echo $saudades1
Hedy
$ echo $saudades2
Coutinho
$ echo $saudades3
Neves
Usando desta forma, o IFS passou a ser o sinal de mais (+) somente para a execução do read, voltando imediatamente ao conteúdo anterior.
O IFS tem por default <ESPAÇO>, <TAB> e <ENTER> , como o os nomes que vc queria ler estavam separados por <ESPAÇO>, então tudo resolvido.
PS: um boa parte desta resposta foi copiada da apostila do curso de Shell (via EAD), cujas inscrições estão abertas (somente por mais 8 dias) e o pessoal da lista tem 20% de desconto. Se alguém quiser mais detalhes, me mande um e-mail em privado. O curso tem 5 aulas para tirar dúvidas (ao vivo pela internet) e e-mail, Whats App e/ou Telegram para dúvidas urgentes.
Pessoal, estou muito grato pela ajuda de todos, estou cada vez melhorando no shell e tudo graças a ajuda de vocês.
Mas se me permitem uma ultima dúvida, poderiam me explicar como dunciona esse while (while read Nome1 Resto).O que eu entendi é que ele vai ler Nome1 e Resto, do arquivo pessoas.txt, mas como ele sabe quem é Nome1 e quem é o Resto, pergunto pois se eu quisese colocar um telefone, como ele saberia quem é telefone?Desde já muito obrigado pela ajuda.
[Prev in Thread] Current Thread [Next in Thread]
- Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR, brunodiasinfo, 2018/09/01
- Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR, Julio C. Neves, 2018/09/01
- Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR, T.Collons, 2018/09/01
- Re: [shell-script] Script para Pegar nomes num arqui vo TXT e formatar a saída usando FOR, itamarnet, 2018/09/02
- Re: Script para Pegar nomes num arquiv o TXT e formatar a saída usando FOR, brunodiasinfo, 2018/09/02
- Re: [shell-script] Re: Script para Pegar nomes num arquiv o TXT e formatar a saída usando FOR, Julio C. Neves <=
- Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR, T.Collons, 2018/09/02
- Re: [shell-script] Script para Pegar nomes num arquivo TX T e formatar a saída usando FOR, itamarnet, 2018/09/02
- Re: [shell-script] Script para Pegar nomes num arquivo TX T e formatar a saída usando FOR, T.Collons, 2018/09/02
- Prev by Date: Cupom de desconto para inscrição no curso "Programação Shell Linux", do Julio Neves
- Next by Date: Inserir um TAB depois de outros TABs
- Previous by thread: Re: Script para Pegar nomes num arquiv o TXT e formatar a saída usando FOR
- Next by thread: Re: [shell-script] Script para Pegar nomes num arquivo TXT e formatar a saída usando FOR
- Index(es):