将名称及其值列表从一个文件搜索到另一个文件?

将名称及其值列表从一个文件搜索到另一个文件?

我有两个 .csv 文件。第一个文件有一列名称列表,第二个文件有六十列,包括所有列中的名称及其值。我希望从第一个文件中搜索名称到第二个文件中的名称和值。

例如:

第一个文件:

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

相关内容