The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
leitura arquivo texto linha por linha MizzGail Programação Shell Script e 6 04-14-2008 07:58
Linha por linha arquivo leitura ... e muito mais! ProFiction Programação Shell Script e 6 07-26-2007 12:32
Lendo linha a linha a partir de um arquivo tej.buch Programação Shell Script e 2 01-23-2006 02:50
sed não saída última linha do arquivo de entrada 2reperry Programação Shell Script e 3 12-16-2005 12:51
Lendo linha a linha a partir do arquivo. akpopa UNIX para Dummies Perguntas & Respostas 4 08-30-2001 11:20

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-17-2008
Escuridão Peixe Darkness Fish is offline
Usuário
  
 

Join Date: Jul 2008
Posts: 2
Question Problema com leitura arquivo linha-a-linha, e saída para um novo arquivo

Oi todos. Eu compreendo isso é provavelmente um pouco de uma pergunta noob, mas estou realmente um programador C # trabalhando em um sistema legado, e não se lembra muito unix.

Quero ler a partir de um tubo-delimeted arquivo como formatado da seguinte forma:

idno | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc
idno | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc
idno | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc

Eu quero copiar cada linha para um outro arquivo, dependente do produto existente em uma seqüência variável I'm holding na memória: "prod1 | prod2 | prod3" ($ produtos no exemplo abaixo)

Por isso eu estava procurando:

para a linha em `cat $ temp_dir / $ filename | awk '(print $ 0)'`
fazer
prod \u003d `echo" $ linha "| awk 'BEGIN (FS \u003d"|"} (print $ 2)'`
valid_prod \u003d `echo $ produtos | grep" $ prod "`
if [-n "$ valid_prod"]; então
echo "$ line">> $ new_file.txt
fi
feito

No entanto esta linha variável parece estar baseada em espaços separados, criando o novo arquivo como:

idno | PRODUTO | Nome | rua
cidade
código postal | etc | etc | etc | etc

Existe qualquer maneira eu possa passar através de cada linha como um único parâmetro, independentemente dos espaços?

Qualquer ajuda é gratefully appreciated,
Dave
  #2 (permalink)  
Old 07-17-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
Modérateur
  
 

Join Data: dezembro 2007
Localização: Home, de 17 de tempo de campeão mundial de Boston Celtics
Posts: 1.311
Wink Uma abordagem diferente (ainda não testado)


Código:
while read zf
   do
   prod=$(echo "$zf" | cut -d"|" -f2)
   valid_prod=$(echo "$products" | grep "$prod")
   if [ -n "$valid_prod" ]
      then
      echo "$zf" >>$new_file
   fi
done <$filename

Às vezes eu recebo tão confundido com o «e», assim, eu prefiro a abordagem acima referida.
  #3 (permalink)  
Old 07-17-2008
TinWalrus TinWalrus is offline
Usuário
  
 

Join Date: May 2007
Lugares: 35
Ifs

você pode manipular o IFS (interno campo separador) - como um exemplo - uma vez que go.dat contém as linhas com espaços

# Criar o array, sem manipular IFS, espaços irão quebrar o array
#
Um set-linhas $ (cat go.dat)
para a linha de "$ (linhas [@]}"; fazer
echo "$ linha" "
feito

# Criar a matriz, mas em primeiro lugar mudar o IFS (defini-lo de volta - muito importante)
# Após o array é definido
#
oIFS \u003d $ IFS
IFS \u003d $ (IFS # #?)
Um set-linhas $ (cat go.dat)
IFS \u003d $ oIFS

para a linha de "$ (linhas [@]}"; fazer
echo "$ linha" "
feito


# # # # # # Go.dat
idno um | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc
idno b | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc
idno c | PRODUTO | Nome | rua cidade postcode | etc | etc | etc | etc

# # # # # # Fim go.dat


Sei que não ajuda o seu problema (escuridão peixe já respondido) Então eu pensei que eu ia jogar meu ,02 em cerca de IFS - uma vez que fui mordido por que no passado - e isso vem a calhar muito frequentemente
  #4 (permalink)  
Old 07-18-2008
Escuridão Peixe Darkness Fish is offline
Usuário
  
 

Join Date: Jul 2008
Posts: 2
Muito obrigado por sua ajuda, tanto de você, é muito apreciada.

Eu estava ficando perdidas em um mundo de comandos awk aleatória ininteligível encontrada através do google.
  #5 (permalink)  
Old 07-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
Modérateur
  
 

Join Data: dezembro 2007
Localização: Home, de 17 de tempo de campeão mundial de Boston Celtics
Posts: 1.311
Cool No Unix, há um número quase infinito de maneiras de resolver as coisas

Como você lê através deste forum, você deve obter um sabor das diferentes maneiras de resolver um problema. Há questões de
awk vs grep ou cortadas
inútil de gato
e muitos outros. Algumas soluções podem ser mais robusto, enquanto outros apenas com bom aspecto.

Portanto, não apequenar pobres pouco awk - que serve uma grande base de dados para determinados fins problemas.
Closed Thread

Marcadores

Tags
awk, arquivo, grep ou, ler, espaços, escrever

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 06:25.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0