한 파일에서 다른 파일로 이름과 해당 값 목록을 검색하시겠습니까?

한 파일에서 다른 파일로 이름과 해당 값 목록을 검색하시겠습니까?

두 개의 .csv 파일이 있습니다. 첫 번째 파일에는 이름 열 목록이 있고 두 번째 파일에는 모든 열의 이름과 해당 값을 포함하여 60개의 열이 있습니다. 첫 번째 파일의 이름부터 두 번째 파일의 이름과 값까지 검색하고 싶습니다.

예를 들어:

첫 번째 파일:

Column 1
Polaromonas
uncultured
Leptothrix
Clostridium
Methylocystis

두 번째 파일:

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

예제 출력:

              NP      NT        CT
Polaromonas   21      0         0
uncultured    67      0         0
Leptothrix    32      0         0
Clostridium   23      43        12
Methylocystis 34      0         23

답변1

script.sh에 넣고 실행하세요../script.sh 첫 번째와 두 번째

#!/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

관련 정보