Lista de busca de nomes e seus valores de um arquivo para outro arquivo?

0

Eu tenho dois arquivos .csv. Primeiro arquivo tem uma coluna de lista de nomes e segundo arquivo tem sessenta colunas incluindo nomes e seus valores em todas as colunas. Eu estou olhando para procurar nomes do primeiro arquivo para seus nomes e valores do segundo arquivo.

Por exemplo:

Primeiro arquivo:

Column 1
Polaromonas
uncultured
Leptothrix
Clostridium
Methylocystis

Segundo arquivo:

Column 1      Column 2    Column 3        Column 4    Column 5        Column 6
 NP                        NT                           CT
Methylocystis   34         Desulfonema      0           Methylocystis    23  
uncultured      67         Chlorobium       43          Clostridium      12
Clostridium     23         Rhodovulum       45          Rhodovulum       12
Leptothrix      32         Azohydromonas    12          Azohydromonas    45 
Polaromonas     21         Allochromatium   23          Allochromatium   0

Exemplo de saída:

              NP      NT        CT
Polaromonas   21      0         0
uncultured    67      0         0
Leptothrix    32      0         0
Clostridium   23      43        12
Methylocystis 34      0         23
    
por Manoj Kumar 02.03.2018 / 15:08

1 resposta

0

Coloque isso em um script.sh e execute ./ script.sh primeiro segundo

#!/bin/bash

TOFIND=($(cat "$1" | tail -n +2))
COLUMNS=()
for ((I=0; I<3; ++I))
do
  COLUMNS+=("$(cat "$2" | tail -n +3 | awk -F' ' '{print $'$((2*$I+1))',$'$((2*$I+2))'}')")
done

RESULT=()

echo -e "\tNP\tNT\tCT"
for ELEM in "${TOFIND[@]}"
do
  echo -ne "$ELEM"
  for COLUMN in "${COLUMNS[@]}"
  do
    VAL="$(echo "$COLUMN" | grep "$ELEM")"
    if test -z "$VAL"
    then
      VAL=0
    else
      VAL="$(echo "$VAL" | awk -F' ' '{print $2}')"
    fi
    echo -ne "\t$VAL"
  done
  echo ""
done
    
por 02.03.2018 / 16:15

Tags