![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
|||||
|
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. |
![]() |
| Marcadores |
| Tags |
| awk, arquivo, grep ou, ler, espaços, escrever |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|