GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo usar Awk para imprimir solo líneas que contienen 5 columnas?

Tengo un archivo que contiene datos delimitados por tuberías. Quiero imprimir las líneas que tienen solo 5 columnas.
Intenté lo siguiente. No funciona. Simplemente imprime todas las líneas. ¿Podría por favor indicarme cómo hacerlo correctamente? ¡Gracias!

Contenido del archivo:

10413300|Maintenance Stock Clerk A - Michelle Hanley | Michelle Hanley (1680654)|Filled||10402112
10413301|Maintenance Stock Clerk - dasda|space||10402122
MOM Parkcentrum F;Alkotás u. 53.||34535|34345|asd
Business Center Naberezhnaya Tower" Block C"|||3453|ffg|345

Aquí estoy tratando de imprimir líneas que tienen solo 5 columnas.

$ gawk -F "|" '{ if (NF=5) print $0 }' data3
10413300 Maintenance Stock Clerk A - Michelle Hanley   Michelle Hanley (1680654) Filled
10413301 Maintenance Stock Clerk - dasda space  10402122
MOM Parkcentrum F;Alkotás u. 53.  34535 34345 asd
Business Center Naberezhnaya Tower Block C   3453 ffg

El resultado muestra que 2 de 4 líneas tienen más de 5 columnas.

$ gawk -F "|" '{print NF}' data3
6
5
5
6

Respuesta aceptada:

NF=5 es una tarea, la prueba de valores se realiza con == . Así:

awk -F | 'NF==5' data3

Linux
  1. ¿Cómo imprimir las líneas número 15 y 25 de cada 50 líneas?

  2. Usando awk para imprimir todas las columnas desde la enésima hasta la última

  3. ¿Cómo cortar las primeras n y las últimas n columnas?

  4. Cómo mostrar solo filas diferentes usando diff (bash)

  5. Cómo encontrar líneas que contienen una cadena en Linux

Cómo usar el comando uniq para procesar listas en Linux

Cómo imprimir líneas duplicadas en un archivo de texto en Linux

Linux:¿cómo usar el espacio de intercambio solo para emergencias?

¿Cómo seguir la salida -f con colores usando solo Awk y mostrar el resto de la salida?

¿Cómo uso las líneas de un archivo como argumentos de un comando?

Cómo usar sed para eliminar las últimas n líneas de un archivo