![]() |
|
|
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 |
| Dividir arquivo grande e adicionar cabeçalho e rodapé em cada arquivo | ashish4422 | Programação Shell Script e | 1 | 04-15-2008 07:12 |
| Dividir um arquivo com nenhum padrão - Split, Csplit, Awk | madhunk | UNIX para Dummies Perguntas & Respostas | 10 | 12-17-2007 12:57 |
| dividir o nome do arquivo | rayashot | Programação Shell Script e | 1 | 05-28-2007 02:47 |
| Necessidade de dividir o arquivo | getdpg | Programação Shell Script e | 11 | 09-04-2006 04:08 |
| Como dividir arquivo de tags dentro arquivo? | spookyrtd99 | Programação Shell Script e | 1 | 07-31-2006 01:50 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Dividir arquivo usando awk
Estou tentando ler um arquivo e dividir o arquivo em vários arquivos. Preciso de criar novos ficheiros com diferentes conjunto de linhas do arquivo original. ou seja, o primeiro arquivo de saída pode conter 10 linhas e 100 linhas, o segundo e assim por diante. Os critérios para se obter as linhas entre duas linhas começando com alguns caracteres (variável)
por exemplo. Um exemplo de arquivo de entrada DOC100 aaaaaa bbbbbb cccccccc FIM DOC200 ddddddd eeeeeee FIM Preciso enviar as linhas entre DOC100 e END para out.1 e as linhas entre DOC200 e END para o próximo out.2 Eu pensei que eu poderia fazer isto usando awk e eu tentei o seguinte comando, mas não funcionou. k \u003d grep $ filename DOC | cut-c4-6 awk-v cn \u003d $ k '/ DOC $ cn /, / FIM / (print $ 0)' $ filename> $ OUTFILE Alguém pode me ajudar nisto? Obrigado |
|
||||
|
Graças zazzybob e Ygor para a sua ajuda. Mas não vejo problema algum com cada um dos seus scripts.
zazzybob do script - Primeiro de tudo eu tenho um tamanho fixo arquivo de dados que eu preciso para dividir. O script cria arquivos separados com os dados, mas ele ignora destinados a espaços no campo, significa que concatena os campos deixando de fora os espaços dentro deles. Ygor do script - Seu script cria um arquivo chamado DOC apenas com os dados entre a última DOC / FIM. Mas ela coloca os dados como o que está no arquivo de entrada, que é um bom sinal. |
|
|||||
|
Eu não lido pouco sobre o arquivo como "doc.1" antes. Experimente esta vez ...
Código:
awk '/^DOC/{f="doc."++d} f{print > f} /^END/{close f; f=""}' infile
\u003d\u003d> Doc.1 <\u003d\u003d DOC100 aaaaaa bbbbbb cccccccc FIM \u003d\u003d> Doc.2 <\u003d\u003d DOC200 ddddddd eeeeeee FIM |
|
||||
|
zazzybob o script funciona bem agora.
Ygor's script ainda tem um problema. Cria arquivos de saída separado, mas agora ela coloca linhas começando com DOC & FIM também nos arquivos de saída. Eu só preciso dos dados entre as linhas. Agin Obrigado pela ajuda. |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|