2011-10-27 23 views

Respuesta

15

Debería ser suficiente para decir

 
$ awk '$3 != 7' 

Tenga en cuenta que esto una comparación numérica, y omitirá las líneas en las que el tercer campo es, por ejemplo, "0.7e1", pero funcionará para los datos de muestra que proporcione.

8

eliminar una línea que contiene 7

awk '!/7/' yourFile 
+0

Esta sintaxis no funciona con tcsh. ¡Necesito escapar! – ThomasMcLeod

+6

Escapar '!' No es la solución. ¡La solución es no usar 'tcsh'! –

6

Las otras respuestas funcionan. He aquí por qué

El modelo de procesamiento estándar de Awk es leer una línea de entrada, opcionalmente coincidir con esa línea, y si coincide (opcionalmente) imprimir la entrada. Las otras soluciones usan una coincidencia de negación, por lo que las líneas se imprimen a menos que coincidan.

Su muestra de código no usa una coincidencia de negación: dice "si algo es cierto, hágalo". Como quiera eliminar la entrada, cuando coincida con ese objetivo, puede omitir la impresión.

{ 
    if($3 == 7){ 
    #skip printing this line 
    next 
    } 
} 

IHTH.

+0

Esto no funciona a menos que agregue una instrucción 'else' que diga' print' en él. – Masster

+0

La pregunta era "Así que si quería eliminar una línea que contiene 7 como el tercer campo:". Creo que he respondido esa pregunta. ¡Gracias por su preocupación! :-) – shellter

Cuestiones relacionadas