Quiero eliminar una línea si contiene un valor que se especifica.Awk borrar la línea que contiene los datos
2 5 8
1 3 7
8 5 9
Así que si quería borrar una línea que contiene 7 como el tercer campo:
{
if($3 == 7){
####delete the line
}
}
Quiero eliminar una línea si contiene un valor que se especifica.Awk borrar la línea que contiene los datos
2 5 8
1 3 7
8 5 9
Así que si quería borrar una línea que contiene 7 como el tercer campo:
{
if($3 == 7){
####delete the line
}
}
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.
eliminar una línea que contiene 7
awk '!/7/' yourFile
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.
Esta sintaxis no funciona con tcsh. ¡Necesito escapar! – ThomasMcLeod
Escapar '!' No es la solución. ¡La solución es no usar 'tcsh'! –