![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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! |
|
|||||
|
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 |
|
|||||
|
Oi, vgersh99.
Citação:
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 |
|
||||
|
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. |
|
|||||
|
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 |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|