![]() |
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí. |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Coincidencia de campos de filas y de funcionamiento | ashis.tewari | Programación de scripts de shell y | 3 | 12-04-2008 09:02 AM |
| suma de todos los registros coincidentes usando awk | i.scientist | UNIX for Dummies Preguntas y Respuestas | 8 | 08-06-2008 09:13 PM |
| cómo eliminar registros duplicados en un archivo | vamshikrishnab | Programación de scripts de shell y | 5 | 06-18-2008 11:00 AM |
| Cómo eliminar filas en particular a partir de un archivo | suresh3566 | Programación de scripts de shell y | 5 | 06-02-2008 06:07 AM |
| Eliminar filas repetidas de un archivo | Tonet | Programación de scripts de shell y | 8 | 04-08-2008 10:42 AM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
SED: eliminar la fila correspondiente y 4 siguientes filas?
Hola, Trató de buscar solución, y encontré algo similar pero no se pudo adaptar la solución para mis necesidades .. Estoy tratando de coincidir con un patrón (en este caso "ProcessType") en un 'log', a continuación, elimine esta línea y los 4 siguientes líneas. El logfile es el siguiente: Código:
ProcessType: PROCESS_A (0) <---- delete this SequenceNumber: 8285 <---- delete this <---- delete this 2009 Mar 07 22:04:23:679 0:8285 <---- delete this <---- delete this ProcessType: PROCESS_A (0) SequenceNumber: 8286 2009 Mar 07 22:04:23:679 0:8286 ProcessType: PROCESS_B (68) SequenceNumber: 40689 2009 Mar 07 22:04:23:698 68:40689 DATA that should not be deleted ProcessType: PROCESS_B (68) SequenceNumber: 40690 2009 Mar 07 22:04:23:698 68:40690 DATA that should not be deleted ProcessType: PROCESS_C (93) SequenceNumber: 36235 2009 Mar 07 22:04:23:829 93:36235 ProcessType: PROCESS_C (93) SequenceNumber: 36236 2009 Mar 07 22:04:23:829 93:36236 DATA that should not be deleted He intentado esto: Código:
sed -e '/\<ProcessType\>/,/$/d' < log.txt > test Pero que sólo dieron resultado en el presente: Código:
2009 Mar 07 22:04:23:679 0:8285 2009 Mar 07 22:04:23:679 0:8286 2009 Mar 07 22:04:23:698 68:40689 2009 Mar 07 22:04:23:698 68:40690 2009 Mar 07 22:04:23:829 93:36235 2009 Mar 07 22:04:23:829 93:36236 2009 Mar 07 22:04:23:945 91:89062 2009 Mar 07 22:04:23:945 91:89063 2009 Mar 07 22:04:24:018 91:89064 2009 Mar 07 22:04:24:018 91:89065 2009 Mar 07 22:04:24:018 91:89066 |
|
||||
|
Si se permite awk: Código:
awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
Recuerdos |
|
||||
|
Gracias Franklin, no trabajo para mí sin embargo .. Código:
# awk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
awk: syntax error near line 1
awk: bailing out near line 1
Con nawk se ejecuta, pero sólo elimina la primera aparición de ese "bloque" Código:
# nawk '/ProcessType:/ && !p {i=-4;p=1} i++ > 0' file
ProcessType: PROCESS_A (0)
SequenceNumber: 8286
2009 Mar 07 22:04:23:679 0:8286
ProcessType: PROCESS_B (68)
SequenceNumber: 40689
2009 Mar 07 22:04:23:698 68:40689
DATA that should not be deleted
ProcessType: PROCESS_B (68)
SequenceNumber: 40690
...
|
|
||||
|
He entendido la pregunta, esta debe eliminar las primeras 4 líneas en todos los bloques: Código:
nawk '/ProcessType:/{i=-4} i++ > 0' file
Recuerdos |
|
||||
|
Gran! Funciona perfectamente! gracias
![]() |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|