eliminar líneas donde el valor de un campo es menor o igual a 3 – sed o awk?

Necesito eliminar cada línea que tenga un valor de 2 o less en el 8vo campo (columna).

Mi información se ve así:

12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8 01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1 01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4 01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6 

Entiendo que al usar awk puedo quitar los valores deseados e imprimirlos en otro file, y entiendo que sed editaría el file actual. En cualquier caso, necesito conservar el file original.

Nota : proporcione explicaciones completas con sus soluciones. No es suficiente escribir el command, por favor, anotar sugerencias.

Nota adicional : los datos tienen una línea de encabezado, por lo que la solución más probable será necesaria

awk 'FNR> 1'

¿Supongo?

casi lo logras

  awk '(NR>1) && ($8 > 2 ) ' foo > bar 

dónde

  • NR es el número de logging (es decir, el número de línea)
  • $8 es ocho campo
  • && es lógico y
  • foo es el file original, sin cambios
  • bar file resultante
  • acción pnetworkingeterminada implícita es imprimir la línea de input actual

tenga en count que el encabezado está rayado de foo a bar, para mantenerlo

  awk '(NR==1) || ($8 > 2 ) ' foo > bar 

dónde

  • || es lógico o
  • la línea de input se imprime si NR == 1 o si $ 8> 2

actualizar

para especificar un range

  • ( ($8 >= -4) && ( $8 <= 4 ) ) 8 ° campo de -4 a 4
  • (NR == 1 ) || ( ($8 >= -4) && ( $8 <= 4 ) ) (NR == 1 ) || ( ($8 >= -4) && ( $8 <= 4 ) ) mismo, incluido el encabezado.