Acciones sobre archivos de texto. [Batch]

Iniciado por leogtz, 24 Enero 2009, 00:30 AM

0 Miembros y 1 Visitante están viendo este tema.

carlosguay

Gracias leo por tu respuesta tan rapida, pero hay un problemilla.

Veras som muchisimos archivos, todos con hex y acsii, asin.


ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38  | .Uk.......6.<.C8
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd     | ../.J...M.A.....
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72  | .........,..s..r
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                       | .].~...e.l76



Como ves la parte de la derecha, tiene los hex convertidos en acsii, y com este codigo pues lo quito todo, ya que para manipular el archivo, necesito quitar toda esa parte.

type private.txt
for /f "tokens=1-16" %%a in ('type texto1.txt') do (
echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p >> texto2.txt
)
echo:
type texto2.txt
Tip provisto por Tomi Salmi.


Veo que lo que me pones, quita caracter por carater, pero los archivos som distintos, osea que esa parte es solo en ese archivo, en otros es totalmente distinto, lo unico que es igual es el |, por eso realmente lo que necesito, es algo que me quite TODO, a partir del | incluido.

Ahora esta mas claro, no, gracias

leogtz

Cita de: carlosguay en  5 Julio 2010, 14:21 PM
Gracias leo por tu respuesta tan rapida, pero hay un problemilla.

Veras som muchisimos archivos, todos con hex y acsii, asin.


ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38  | .Uk.......6.<.C8
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd     | ../.J...M.A.....
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72  | .........,..s..r
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                       | .].~...e.l76



Como ves la parte de la derecha, tiene los hex convertidos en acsii, y com este codigo pues lo quito todo, ya que para manipular el archivo, necesito quitar toda esa parte.

type private.txt
for /f "tokens=1-16" %%a in ('type texto1.txt') do (
echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p >> texto2.txt
)
echo:
type texto2.txt
Tip provisto por Tomi Salmi.


Veo que lo que me pones, quita caracter por carater, pero los archivos som distintos, osea que esa parte es solo en ese archivo, en otros es totalmente distinto, lo unico que es igual es el |, por eso realmente lo que necesito, es algo que me quite TODO, a partir del | incluido.

Ahora esta mas claro, no, gracias

Sí, ya más claro, ¿pero siempre hay ese delimitador?

O sea, siempre está
Citartexto..... | texto....

¿?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

carlosguay

Cita de: Leo Gutiérrez. en  6 Julio 2010, 22:26 PM

Sí, ya más claro, ¿pero siempre hay ese delimitador?

O sea, siempre está
Citartexto..... | texto....

¿?


Si leo, SIEMPRE, esta el | y ni el, ni lo que sigue, lo necesito, solo los hexs.

Osea, TODOS los archivos, los necesito asin.

  ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38 
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd     
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36   


y NO me sirven asin.

    ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38   | .Uk.......6.<.C8
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd   | ../.J...M.A.....
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72   | .........,..s..r
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                 | .].~...e.l76


A ver si fueras capaz de darme una idea, gracias.

leogtz

Ah, okay, ya te entendí, yo en principio no había contestado acertadamente porque creía que no todos los archivos tenían eso, siendo así esto trabaja bien:
C:\>type algo.txt
ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38   | .Uk.......6.<.C8
 bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd   | ../.J...M.A.....
 f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72   | .........,..s..r
 06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
 06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
 ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                 | .].~...e.l76
C:\>for /f "tokens=1 delims=|" %_ in (algo.txt) do @(echo %_)
ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38
 bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd
 f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72
 06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55
 06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45
 ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36

C:\>


Código (dos) [Seleccionar]
for /f "tokens=1 delims=|" %%_ in ('type algo.txt') do (
echo %%_
)


Usando sed:


C:\>type algo.txt | sed "s/\(.*\)|.*/\1/g"
ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36

C:\>
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

carlosguay

Justo, lo que necesitaba, ;-)

Gracias leo, e usado el codigo de for, me va estupendamente.

Te estoy muy agradecido, me as quitado un quebradero de cabeza.

un saludo amigo

leogtz

Cita de: carlosguay en  8 Julio 2010, 20:15 PM
Justo, lo que necesitaba, ;-)

Gracias leo, e usado el codigo de for, me va estupendamente.

Te estoy muy agradecido, me as quitado un quebradero de cabeza.

un saludo amigo

De nada.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

darth1024

Estimado Leo, estuve revisando tus aportes al respecto y me parecen excelentes pero me atrevo a pedirte un favor en particular para poder extraer determinada porcion de texto de un txt.

Te puedo enviar la consulta a tu mail personal o sigo por este lado?

Gracias.

darth1024

Hola Leo, te molesto nuevamente pues me doy cuenta que puedo postear libremente mi consulta:

Tengo un archivo txt con el siguiente formato:

Session : 2010/08/05-7
                                                                             
ObjectType    : FileSystem
DiskAgentID   : 1281011407
Object Status : Completed
==============================================================================
-rw-r----- 1216988160  05/08/2010 07:06:13 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_05/o1_mf_annnn_CTF_BK_ARC_65ob8yfj_.bkp
-rw-r-----   81516544  05/08/2010 07:05:53 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_05/o1_mf_annnn_CTF_BK_ARC_65ob8yg1_.bkp

Session : 2010/08/04-20
                                                                             
ObjectType    : FileSystem
DiskAgentID   : 1280979007
Object Status : Completed
==============================================================================
-rw-r----- 1215431168  04/08/2010 22:02:43 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_04/o1_mf_annnn_CTF_BK_ARC_65nbf9hc_.bkp
-rw-r----- 1214676480  04/08/2010 22:02:44 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_04/o1_mf_annnn_CTF_BK_ARC_65nbf9j0_.bkp

Session : 2010/08/05-10
                                                                             
ObjectType    : FileSystem
DiskAgentID   : 1281018607
Object Status : Completed
==============================================================================

-rw-r----- 1227828224  05/08/2010 09:01:14 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_05/o1_mf_annnn_CTF_BK_ARC_65ojzrk4_.bkp
-rw-r----- 1225617920  05/08/2010 09:01:16 /oracle/ora_bck/ctf/flash_recovery_area/CTF/backupset/2010_08_05/o1_mf_annnn_CTF_BK_ARC_65ojzrkz_.bkp


Lo que quiero es extraer el texto del detalle "-rw-r-----" que se muestra para cada sesion. O sea, generar un archivo nuevo en base a las sesiones por dia de mi txt original.

Espero me puedas dar una mano.

Muchas gracias.

Sam



leogtz

Por aquí mismo.

En un momento checo tu duda.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

leogtz

@darth1024

No he entendido bien como deseas que aparezca la información en el archivo de texto.

Este script ofrece algo, pero no sé si es lo que quieres:

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
set /a counter=0
for /f "tokens=*" %%_ in ('type "file.txt" ^| find "-rw-r-----"') do (
set /a counter+=1
echo %%_ > "log_!counter!.txt"
)
exit /b 0


Ponme una muestra de como debiera quedar en el o los archivos de texto.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com