![]() |
|
|
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 |
| ld: fatal: deslocalizações continuam contra alocáveis mas não writable seções | tdallagn | Sun Solaris | 0 | 05-21-2008 08:58 |
| extrair várias seções de um arquivo | rgentis | UNIX & avançada para usuários experientes | 1 | 03-18-2008 08:40 |
| Obtido múltiplas linhas em vários locais em um arquivo | dala | Programação Shell Script e | 8 | 03-14-2008 03:28 |
| Manipular Configuração Ficheiro com o mesmo nome do parâmetro em várias secções | Potro | Programação Shell Script e | 7 | 03-05-2008 11:36 |
| extrair um arquivo formulário. tar.gz sem Uncompressing. arquivo tar.gz | balireddy_77 | Programação Shell Script e | 2 | 07-10-2007 05:23 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
extrair várias seções de arquivo
Eu tenho um arquivo que eu preciso analisar várias seções do arquivo.
O arquivo contém várias linhas que começam com ST (Abunch de dados) Em seguida, o arquivo contém várias linhas que comecem com SE (Abunch de dados) SE * 30 * 0001 ST * 810 * 0002 Eu preciso de todas as linhas, incluindo entre estes. Estas são as facturas. A factura começa com a linha ST e termina com a SE linha. Preciso sair de todas as facturas em ficheiros separados. Pode alguém por favor me ajude. Sei Grep, sed, Ou Awk pode fazer isso, mas não sei como. Obrigado Aqui está um exemplo: ST * 810 * 0001 BIG * 20080315 * 1220680417 ** OFERTA *** DI N1 * SF * McLane altas planícies * 92 * 46120004 N1 * * ST SWC 7-11 # 57134 * 91 * 571315 N3 * 2712 E 8.o ST Odessa N4 * * * TX 79761 REF ST * * 000134 ITD * 05 * 3 ***** 7 ***** NET 7 IT1 ** 1 * CA * 20/09 ** CB * 649251 * pi * 093 * UP * 099299711018 * RA * NA TXI * ZZ * 1,53 **** 2 DTC RES * 0 ** *** RSE * 1 PID * F **** 7/11 T-SHIRT BAG 1 / 7 BBL PO4 * 1000 IT1 ** 1 * EA * 33,72 ** CB * 834861 * pi * 093 * UP * 012253022401 * RA * NA TXI * ZZ * 2,57 **** 2 DTC RES * 0 ** *** RSE * 1 PID * F **** KIT CONCRETO CHAMP PO4 * 1 IT1 ** 1 * EA * 0,03 ** CB * 192849 * pi * 093 * UP * 000000192842 * RA * NA DTC RES * 0 ** *** RSE * 1 PID * F **** SCS 711 BK 200 PO4 * 1 IT1 ** 30 * EA * 2,59 ** CB * 001511 * pi * 093 * UP * 025215102776 * RA * NA DTC RES * 0 ** *** RSE * 1 PID * F **** Maxell T-160 PLUS VIDEO PO4 * 1 TDS * 18454 SAC * C * G740 *** *** 06 ******* 5300 SERVIÇO CTT * 4 SE * 30 * 0001 |
|
||||
|
Obrigado por sua resposta imediata.
Ele fez o que eu queria. No entanto, a três pontos precisam ser analisados para a diferentes arquivos. Então você tem ST dados SE Isto deve ser levado para arquivo 1 ST dados SE Isto deve ser tomado para o arquivo 2 ETC ..... Também notei que a ST e SE são numerados. ST * 810 * 0004 Então * SE (Número) * 0004 Obrigado Última edição por rgentis; em 03/18/2008 08:07.. Motivo: Adicionado algo |
|
||||
|
nawk 'BEGIN (n \u003d 1)
$ 0 ~ / ^ ST / f \u003d (1) $ 0 ~ / ^ SE / fatura ([n] \u003d sprintf ( "% s \ n% s", a factura [n], $ 0), f \u003d 0, n \u003d n +1) ( if (f \u003d\u003d 1) factura [n] \u003d sprintf ( "% s \ n% s", a factura [n], $ 0) ) END ( for (i na factura) imprimir factura [i]>> i close (i) ) 'Filename |
|
||||
|
extrair várias seções de arquivo
# - Use ST valores como saída nome_ficheiro.
awk-v fora \u003d "/ dev / null" / ^ ST / (gsub ( "\ \ *","-",$ 0); out \u003d $ 0". Txt ") / ^ SE / (fechar (out)) (Printf "% s \ n", $ 0>> out) '$ INFILE Saída será ST-810-0001.txt assim por diante ... -Ramesh |
![]() |
| Marcadores |
| Tags |
| linux, linux comandos, solaris |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|