Hola!!
Estoy necesitando eliminar todas las lineas de un archivo de texto que no cumplan la condición de empezar con las palabras "lote" o "vta"
Ejemplo del archivo original:
____________________________________________________________________________________________________________________________________
Trx |Fecha Pres| | Ventas | Dto. | Cod.Rechazo
|Fecha oper| | con/Dto. | Arancel | Mot.contrap.
____________________________________________________________________________________________________________________________________
lote ctdo | 11/11/14 | 16 Cupones | 6.304,95 | 94,57 |
+ VENTAS C/DESCUENTO CONTADO $ 6.304,95
- ARANCEL $ 94,57
- IVA CRED.FISC.COMERCIO S/ARANC 21,00% $ 19,86
- RETENCION ING.BRUTOS CORDOBA $ 232,14
- RETENCION IVA $ 62,10
- RETENCION IMP.GANANCIAS $ 62,10
----------------
IMPORTE NETO DE PAGOS $ 5.834,18
____________________________________________________________________________________________________________________________________
F.de Pago: ACRED.EN CTA.CTE.NRO 11042 el d?a 13/11/2014 $ 5.834,18 Nro.Liq: 20.158 F.Pres 11/11/2014
____________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________
Trx |Fecha Pres| | Ventas | Dto. | Cod.Rechazo
|Fecha oper| | con/Dto. | Arancel | Mot.contrap.
____________________________________________________________________________________________________________________________________
lote ctdo | 12/11/14 | 11 Cupones | 3.029,72 | 45,44 |
+ VENTAS C/DESCUENTO CONTADO $ 3.029,72
- ARANCEL $ 45,44
- IVA CRED.FISC.COMERCIO S/ARANC 21,00% $ 9,54
- RETENCION ING.BRUTOS CORDOBA $ 111,55
- RETENCION IVA $ 29,84
- RETENCION IMP.GANANCIAS $ 29,84
----------------
IMPORTE NETO DE PAGOS $ 2.803,51
____________________________________________________________________________________________________________________________________
F.de Pago: ACRED.EN CTA.CTE.NRO 11042 el d?a 14/11/2014 $ 2.803,51 Nro.Liq: 20.165 F.Pres 12/11/2014
____________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________
Trx |Fecha Pres| | Ventas | Dto. | Cod.Rechazo
|Fecha oper| | con/Dto. | Arancel | Mot.contrap.
____________________________________________________________________________________________________________________________________
lote ctdo | 13/11/14 | 13 Cupones | 1.832,47 | 27,50 |
+ VENTAS C/DESCUENTO CONTADO $ 1.832,47
- ARANCEL $ 27,50
- IVA CRED.FISC.COMERCIO S/ARANC 21,00% $ 5,78
- RETENCION ING.BRUTOS CORDOBA $ 67,47
- RETENCION IVA $ 18,05
- RETENCION IMP.GANANCIAS $ 18,05
----------------
Liquidaci?n Mensual https://www1.firstdata.com.ar/comercios/select_comercio.html
2 de 4 01/12/2014 09:52 a.m.
IMPORTE NETO DE PAGOS $ 1.695,62
_____________________________________
Ejemplo del archivo procesado:
Citarlote ctdo | 11/11/14 | 16 Cupones | 6.304,95 | 94,57 |
lote ctdo | 12/11/14 | 11 Cupones | 3.029,72 | 45,44 |
lote ctdo | 13/11/14 | 13 Cupones | 1.832,47 | 27,50 |
En fin.. parece simple pero no encuentro info en interner para hacerlo..
Puede ser tanto en batch como en ruby.. Gracias!!
(Type "file.txt" | Findstr /V "^lote ^vta")>"outputFile.txt"
Saludos
Si.. por ese lado lo estaba buscando.. pero la flag /V realiza la tarea inversa a lo que necesito..
Citar/V Prints only lines that do not contain a match.
pensaba marcar con un asterisco al comienzo de las lineas que no cumplieran la condición y luego
(Type "file.txt" | Findstr /V "^*")>"outputFile.txt"
o algo asi..
egrep "^(lote|vta)" file.txt
Cita de: Afkael en 4 Febrero 2015, 15:02 PM
Si.. por ese lado lo estaba buscando.. pero la flag /V realiza la tarea inversa a lo que necesito..
Perdón, lo entendí al revés.
Simplemente no escribas el parámetro /V y así obtendrás el resultado contrario.
Citarlote ctdo | 11/11/14 | 16 Cupones | 6.304,95 | 94,57 |
lote ctdo | 12/11/14 | 11 Cupones | 3.029,72 | 45,44 |
lote ctdo | 13/11/14 | 13 Cupones | 1.832,47 | 27,50 |
Cita de: Afkael en 4 Febrero 2015, 15:02 PM(Type "file.txt" | Findstr /V "^*")>"outputFile.txt"
El comando FindStr utiliza patrones de expresiones regulares, en todo caso sería "^.*", pero la expresión que debes utilizar te la indiqué en el otro comentario.
Lee sobre el uso de expresiones regulares (RegEx): http://en.wikipedia.org/wiki/Regular_expression
Saludos
Cita de: explorer en 4 Febrero 2015, 15:26 PM
egrep "^(lote|vta)" file.txt
emm.. cómo imprimo a un archivo ese comando??
Cita de: Eleкtro en 4 Febrero 2015, 15:53 PM
Perdón, lo entendí al revés.
Simplemente no escribas el parámetro /V y así obtendrás el resultado contrario.
Saludos
uff.. probé con todos las flags que me pareció pudieran funcionar y nunca se me ocurrio quitar la flag u.u
Gracias.. funciona
Lo puedes ejecutar desde la línea de comandos o shell.
egrep "^(lote|vta)" file.txt > outputfile.txt
Cita de: explorer en 4 Febrero 2015, 16:59 PM
Lo puedes ejecutar desde la línea de comandos o shell.
egrep "^(lote|vta)" file.txt > outputfile.txt
Grep es una utilidad que encuentras en sistemas UNIX o derivados. Si esta utilizando un sistema con Windows tendría que bajarse un port de grep.
Pues entonces, con Perl:
perl -nE "/^(lote|vta)/ and print" file.txt > output.txt