[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] For
From: |
Julio Cezar Neves - DISB.O |
Subject: |
RES: [shell-script] For |
Date: |
Fri, 15 Feb 2002 12:17:07 -0300 |
Fal Rodolfo!
Cheio de ressaca do carnaval, não havia visto a sua colocação e já havia
respondido em msg anterior. Explico então + detalhadamente:
Repare a linha abaixo:
$ echo "$IFS" | hd # para usuario Linux, trocar hd por hexdump
0000 20 09 0a 0a ...
0004
Onde:
IFS = Inter Field Separator (separador entre campos)
20 = Espaço (em hexa)
09 = Tab (idem)
0a = New Line (idem)
isto é, são considerados separadores: o branco, a tab e o new line (o último
0a foi devido ao enter que dei no fim da linha). Desta forma o for "verá" os
campos separados poe estes caracteres. Se vc quizer separar somente pelo new
line, faça:
IFS="
"
for i in "$(cat arq1)"; do echo "$i"; done
Outra forma seria com o while:
cat arq1 |
while read linha
do
echo "$linha"
done
ou ainda:
while read linha
do
echo "$linha"
done < arq1
O segundo while é + eficiente que o 1o, mas menos legível e não é compatível
com versões muito antigas do Unix (system V release 2 ou menor).
[ ]s,
Julio Cezar Neves.
-----Mensagem original-----
De: Rodolfo Villanova_HP [mailto:address@hidden]
Enviada em: quinta-feira, 14 de fevereiro de 2002 14:38
Para: 'address@hidden'
Assunto: RE: [shell-script] For
Que estranho!
Testei a última opção informada
> for i in "$(cat arq1)"; do echo "$i"; done
e funcionou sobre HP-Ux.
Humm... Infelizmente não tenho um Linux aqui à mão.
Com a palavra, algum dos mestres da lista...
Fala, prof. Julio Neves...
----------------------------------------------------------------------
"If you have an apple and I have an apple and we exchange apples then
you and I will still each have one apple. But if you have an idea and
I have one idea and we exchange these ideas, then each of us will have
two ideas."
George Bernard Shaw
----------------------------------------------------------------------
> -----Original Message-----
> From: Shell Script [mailto:address@hidden]
> Sent: quinta-feira, 14 de fevereiro de 2002 15:24
> To: address@hidden
> Subject: [shell-script] For
>
>
> Ola pessoal,
>
> estou com o seguinte problema:
>
> tenho um arquivo (arq1), com o seguinte conteúdo:
>
> ======================================================
> From ???@??? Mon Jan 15 09:57:46 2001
> Return-Path: <address@hidden>
> Delivered-To: address@hidden
> Received: (qmail 95419 invoked from network); 13 Jan 2001
> 14:37:24 -0000
> Received: from unknown (HELO servudor.teste.com.br) (200.201.202.203)
> by ds.dominio.com.br with SMTP; 13 Jan 2001 14:37:24 -0000
> Received: from cruzador ([192.168.8.31])
> by servidor.teste.com.br (8.9.3/8.9.3) with SMTP id LAA23233
> for <address@hidden>; Sat, 13 Jan 2001 11:32:20 -0200
> Message-ID: <001301c07d57$36a53f80$address@hidden>
> ======================================================
>
> Preciso trabalhar com uma linha de cada vez, em sequencia.
> Utilizando a
> linha abaixo:
>
> for i in $(cat arq1); do echo $i; done
>
> a saida e gerada com uma palavra em cada linha.
>
> From
> ???@???
> Mon
> Jan
> 15
> 09:57:46
> 2001
> Return-Path:
> <address@hidden>
> Delivered-To:
> dominio.com.br-serviçaddress@hidden
> Received:
> (qmail
> 95419
> ...
>
> Se eu executo a linha abaixo:
>
> for i in "$(cat arq1)"; do echo $i; done
>
> ele lista tudo em apenas uma linha continua, sem quebras.
>
>
> O mesmo ocorre se utilizar a sintaxe abaixo:
>
> for i in "$(cat arq1)"; do echo "$i"; done
>
>
> Alguem saberia como setar o "separador" que o for utiliza, ao inves de
quebrar com o espaço?
>
>
> Obrigado!!
>
> --------------------------------------
> Marcelo Brunner
> address@hidden
> address@hidden
Sair da lista: address@hidden
Banco Dados: http://www.egroups.com/group/shell-script
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html
- RES: [shell-script] For, andre . stato-filho, 2002/02/14
- RES: [shell-script] For,
Julio Cezar Neves - DISB.O <=
- FTP, Shell Script, 2002/02/20