首页 > 解决方案 > 如何使用 bash 读取多个 CSV 文件并将它们正确附加到另一个文件?

问题描述

所以我一直在尝试制作一个程序来读取 5 个 CSV 文件的内容,名为 export n .csv。这些文件的内容需要放在一个名为merge.csv的输出文件中。我变得很困惑exec,因为我不知道该放在哪里。这是代码:

#!/bin/bash

tc=1
for file_index in `ls export*.csv`                    
do
    if [ $tc -eq 1 ]; then
        fline=`head -1 export1.csv`           
        echo $fline > merged.csv
        let "tc++"
    else
        sed 1d | while read riga; do          
            echo "$riga,$file_index" >> merged.csv
        done < $file_index
    fi
done 

问题是我不知道在哪里exec正确放置。必须跳过第一行(第一次除外),因为merge.csv应该将第一行作为字段描述。CSV 文件的结构是这样的:第一行是姓名、姓氏、产品代码,然后是数据。但是我怎样才能正确地循环它们呢?

标签: linuxbashexec

解决方案


试试这个:

#!/bin/bash

HEADER="name,surname,product_code"      # define header
MERGED="merged.csv"                     # define output file

echo $HEADER > $MERGED                  # write header in output file
for csv in export*.csv; do              # run over all csv's
    sed "/$HEADER/d" $csv >> $MERGED    # remove first line, append to output file
done

推荐阅读