MS-DOS : Como selecionar uma linha de um arquivo ?

Comandos e arquivos Batch

Moderadores: 51, guest2003

MS-DOS : Como selecionar uma linha de um arquivo ?

Mensagempor andre_luis » 21 Dez 2010 15:11

Olá pessoal,

Preciso realizar uma operação no DOS semelhante ao GREP do Linux.
No caso, tenho um arquivo TXT onde numa das linhas aparece a string TOTAL <valor>, como abaixo :

aaaa bbbb
cccc dddd
TOTAL xxxx
eeee ffff


Seria simples se aposição fosse sempre definida, mas não é o caso.
O único comando decente que conheço no DOS é o TYPE, que retorna todo o conteúdo do arquivo, mas eu queria filtrar pela ocorrencia dessa string.

Existe algum modo de fazer isso ?

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: MS-DOS : Como selecionar uma linha de um arquivo ?

Mensagempor andre_luis » 21 Dez 2010 15:27

Encontrei :

FINDSTR


Agora, como obter o valor que está após a string TOTAL ?

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor chrdcv » 21 Dez 2010 15:51

Caso pretenda realizar mais operações, classificar, inserir, etc, seria interessante o uso de uma linguagem para expressões regulares. O AWK seria uma boa idéia. Há implementação em java (acho que é a jgawk ou jawk) que nem necessita de um instalador (roda sobre a máquina virtual java). Caso esteja em um ambiente espartano, seria necessário realizar o download do fonte da linguagem e compilar...
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Mensagempor andre_luis » 21 Dez 2010 18:00

Então,

Na verdade, meu grau de liberdade é muito limitado.
O Sistema operacional já está definido ( Windows ) e não posso instalar ou executar nenhum programa nas máquina remotas, devido á normas corporativas e limitação do perfil de usuário.

Por outro lado, se eu decidisse baixar o arquivo Texto inteiro, dependendo do caso, pode conter de algumas dezenas de Kilobytes até alguns Megabytes (depende da quantiadde de erros logados).

A idéia seria transferir por FTP o minúsculo arquivo BAT do DOS e executá-lo no PC remoto, retornando o próprio resultado.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor chrdcv » 22 Dez 2010 12:33

Fiz uns testes rápidos aqui, mas sempre aparece a expressão TOTAL, mesmo passando o que foi achado para um segundo findstr:

findstr "\<TOTAL\>" texto.txt | findstr "\< "

A idéia aqui era de que ao analisar o arquivo texto.txt:
TOTAL abcd
TOTAL xxxx
TOTAL 0ad09
aaaa bbbb
cccc dddd
98545 31231
TOTAL 0123 TOTAL 3210 abcde 123
TOTAL 0ad89
TOTAL -7123
eeee ffff

Após o primeiro findstr teria:
TOTAL abcd
TOTAL xxxx
TOTAL 0ad09
TOTAL 0123 TOTAL 3210 abcde 123
TOTAL 0ad89
TOTAL -7123

Após o segundo findstr teria:
abcd
xxxx
0ad09
0123 TOTAL 3210 abcde 123
0ad89
-7123

Mas tive o resultado anterior (contendo o <TOTAL>).
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Mensagempor andre_luis » 22 Dez 2010 12:49

Olá,

Não me lembrava que pode encadear instruções em sequencia.
Obrigado pela dica, vou tentar usar esse conceito.

AT+
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para DOS

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x