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
Ler um arquivo e escrever o nome do arquivo para um arquivo param. thebeginer UNIX & avançada para usuários experientes 1 10-05-2007 05:38
Derramado em ficheiro Excel unix Soumya Dash Programação Shell Script e 1 09-25-2006 03:56
Ler ficheiros de nomes a partir de um arquivo e executar o arquivo de shell script parente anushilrai Programação Shell Script e 4 03-10-2006 05:25

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 11-20-2007
deep_kol deep_kol is offline
Usuário
  
 

Join Date: Jun 2007
Lugares: 14
Como espirrei um arquivo

Oi,
Tenho um arquivo, abc.txt. como

abc.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 100
Ano Fiscal de 2007
Versão PW3
Moeda USD
1 2 3 4
1 2 3 4
BA Conta número Lucro Ctr ARM jan-fev-TC TC
Um 93.010.000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
Um 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0

KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 152
Ano Fiscal de 2007
Versão PW3
Moeda GBP
1 2 3 4
1 2 3 4
BA Conta número Lucro Ctr ARM jan-fev-TC TC
Um 93.010.000 1200 152 0 0 0
Um 93.010.000 9999 152 -57.885 -16.511 -537.549
KOKRS EL01 RLDNR M2 RRCTY 1
.......
..... 500 linhas como este

Eu tenho que cair este arquivo em vários arquivos de acordo com a empresa código.

ex:

abc_COMCODE_100.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 100
Ano Fiscal de 2007
Versão PW3
Moeda USD
1 2 3 4
1 2 3 4
BA Conta número Lucro Ctr ARM jan-fev-TC TC
Um 93.010.000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
Um 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0


abc_COMCODE_152.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 152
Ano Fiscal de 2007
Versão PW3
Moeda GBP
1 2 3 4
1 2 3 4
BA Conta número Lucro Ctr ARM jan-fev-TC TC
Um 93.010.000 1200 152 0 0 0
Um 93.010.000 9999 152 -57.885 -16.511 -537.549



Kindly sugerir-me como é derramado por shell Unix programa.

Thanks in advance!
  #2 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.130
nawk-f deep.awk abc.txt

deep.awk:

Código:
BEGIN {
  FS=RS=""

  prefix=substr(FILENAME, 1, index(FILENAME, ".")-1)
}
{
   root="unknown"
   for(i=1; i<=NF; i++)
      if ($i ~ "Company Code") {
         n=split($2, a, " ")
         root=a[n]
         break
      }
   out= prefix "_COMCODE_" root ".txt"
   print > out
   close(out)
}

  #3 (permalink)  
Old 11-20-2007
drl's Avatar
DRL drl is online now Forum Advisor  
Usuário
  
 

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

Comando csplit foi desenhado para isso:

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

# @(#) s1       Demonstrate context split, csplit.

set -o nounset
echo

debug=":"
debug="echo"

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

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version bash csplit

echo

# Remove debris files.
rm -f xx*

FILE=${1-data1}

csplit --keep-files -z $FILE "/Company Code/-1" {*}

echo
echo " Files created:"
ls xx*

SAMPLE=xx01
echo
echo " Sample $SAMPLE:"
cat -n $SAMPLE

exit 0

Produção:

Código:
% ./s1

(Versions displayed with local utility "version")
GNU bash 2.05b.0
csplit (coreutils) 5.2.1

1
379
218
81

 Files created:
xx00  xx01  xx02  xx03

 Sample xx01:
     1  KOKRS EL01 RLDNR M2 RRCTY 1
     2  Company Code 100
     3  Fiscal Year 2007
     4  Version PW3
     5  Currency USD
     6  1 2 3 4
     7  1 2 3 4
     8  BA Account number Profit Ctr MRA Jan-TC Feb-TC
     9  A 93010000 1530 152 1429793
    10  A 93010000 9999 403 0 0 0
    11  A 93010000 9999 404 -142
    12  A 93010000 9999 411 0 0 0
    13  A 93010000 9999 465 214538 214538 6114330
    14  A 93010000 9999 487 0 -207918
    15  A 93010000 471 502 0 0 0
    16  A 93010000 9999 502 0 0 0
    17

Ver homem csplit para obter detalhes ... cheers, DRL
  #4 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.130
deve ser uma GNU-ed csplit - não voar no Solaris.
Plus as convenções de nomenclatura para arquivos criados não é o que o OP queria.
Cool ideia embora - como ela!
  #5 (permalink)  
Old 11-20-2007
drl's Avatar
DRL drl is online now Forum Advisor  
Usuário
  
 

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 712
Oi, vgersh99.
Citação:
Originally Posted by vgersh99 View Post
deve ser uma GNU-ed csplit - não voar no Solaris.
Plus as convenções de nomenclatura para arquivos criados não é o que o OP queria.
Cool ideia embora - como ela!
Thanks for the heads-up. Sim, é GNUcoreutils - csplit. Tenho certeza que quando eu estava usando Solaris diária que csplit estava disponível. Se isso não funcionar, como o fez falhar?

Eu testei-o em um FreeBSD 4/11 sistema, e ele tem apenas um anêmico divisão com um padrão de correspondência adicionada, mas não csplit (nem existem no OS X). O GNUlongo opções geralmente podem ser substituídos por um único traço opções.

Seria necessário um outro processo para extrair o texto para tornar o nome do arquivo, mas isso é um bom exercício para o PO ... cheers, DRL
  #6 (permalink)  
Old 11-20-2007
deep_kol deep_kol is offline
Usuário
  
 

Join Date: Jun 2007
Lugares: 14
Oi Amigos,
Obrigado por sua ajuda.
Sou iniciante em Unix. Estou trabalhando em ksh e csh.
agora youuplease pode explicar a forma de executar isso.
abc.txt é o meu nome de arquivo.

DRL sua solução parece ser bem. mas não sou capaz de executá-lo.
  #7 (permalink)  
Old 11-20-2007
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.915
Outra:


Código:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn {
	print > fn
}
{
	prev = $0
}' abc.txt

Utilize nawk no Solaris.

Com algumas Awk implementações (como XPG Awk em Solairs),
você deve ser mais explícito:


Código:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn != 0 {
	print > fn
}
{
	prev = $0
}' abc.txt


PS vgersh99 do prefixo faz mais sentido, é claro.

Última edição por radoulov; em 11/20/2007 06:38.. Motivo: ps
Closed Thread

Marcadores

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 11:03.


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