datos de formato a formato de tabla

JJV:

Soy un novato total a la codificación, pero estoy preguntando la forma más sencilla de generar una tabla de datos de recuento grep.

Mi archivo de salida recuento grep se ve así:

AAR34355.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0
AAR38850.1
./006D_id70.m8:0
./20D_id70.m8:2
./28D_id70.m8:4
A13520.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0

Necesito una salida a parecerse más a esto:

            ./006D_id70.m8    ./20D_id70.m8    ./28D_id70.m8
AAR34355.1         0                0                 0
AAR38850.1         0                2                 4
A13520.1           0                0                 0

o al menos un delimitada equivalente.

Perdona mi descripción, ya que soy bastante nuevo en esto.

¿Hay una manera relativamente simple de formatear los datos de esta manera?

oguz Ismail:

Puede hacerlo todo en awk, sin necesidad de cambio de forma de salida de grep. Suponiendo patrones para realizar la búsqueda se enumeran en un archivo llamado patterns, y buscar archivos en Are file1, file2y file3; copiar y guardar el siguiente bloque de código en un archivo llamado tst.awk,

NR == FNR {
  pat[NR] = $0
  next
}

FNR == 1 {
  fil[c++] = FILENAME
}

{
  for (i in pat)
    if ($0 ~ pat[i])
      mat[FILENAME, pat[i]]++
}

END {
  for (i in fil)
    printf "\t%s", fil[i]

  print ""

  for (i in pat) {
    printf "%s", pat[i]

    for (j in fil)
      printf "\t%d", mat[fil[j], pat[i]]

    print ""
  }
}

y correr

awk -f tst.awk patterns file1 file2 file3

Manifestación:

$ seq 5 > file1
$ seq 3 7 > file2
$ seq 5 9 > file3
$ seq 3 2 7 > patterns
$ awk -f tst.awk patterns file1 file2 file3
        file1   file2   file3
3       1       1       0
5       1       1       1
7       0       1       1

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=406101&siteId=1
Recomendado
Clasificación