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
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

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 03-18-2008
rgentis rgentis is offline
Usuário
  
 

Join Date: Mar 2008
Posts: 4
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
  #2 (permalink)  
Old 03-18-2008
shamrock shamrock is offline Forum Advisor  
Usuário
  
 

Join Date: Oct 2007
Localização: E.U.A.
Lugares: 753

Código:
awk '/^ST/,/^SE/' file

  #3 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Usuário
  
 

Join Date: Mar 2008
Posts: 4
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
  #4 (permalink)  
Old 03-18-2008
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.092
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
  #5 (permalink)  
Old 03-18-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Usuário
  
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 717
Oi.

O suplente awk solução:

Código:
#!/usr/bin/env sh

# @(#) s1       Demonstrate extraction of range to separate files.

#  ____
# /
# |   Infrastructure BEGIN

echo
set -o nounset

debug=":"
debug="echo"

## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -

## Use local command version for the commands in this demonstration.

set +o nounset
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version =o $(_eat $0 $1) awk my-nl
set -o nounset

# Use nawk or /usr/xpg4/bin/awk on Solaris.

echo

FILE=${1-data1}
echo " Input file $FILE:"
cat $FILE

# |   Infrastructure END
# \
#  ---

echo
echo " Results from processing:"
awk '
BEGIN   { i = 0 }
/ST/            { i++ ; name = "file" i }
/ST/,/SE/       { print > name }
' $FILE

my-nl file?

exit 0

Produção:

Código:
% ./s1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4
my-nl (local) 296

 Input file data1:
ST
first invoice
SE
ST
second invoice
SE
ST
third invoice
SE

 Results from processing:

==> file1 <==

  1 ST
  2 first invoice
  3 SE

==> file2 <==

  1 ST
  2 second invoice
  3 SE

==> file3 <==

  1 ST
  2 third invoice
  3 SE

Escolha o nome do arquivo que você deseja basear na variável "nome" ... cheers, DRL
  #6 (permalink)  
Old 03-19-2008
faltooweb faltooweb is offline
Usuário
  
 

Join Date: Jan 2008
Lugares: 11
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
Closed Thread

Marcadores

Tags
linux, linux comandos, solaris

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 07:36.


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