Help us understand the problem. What is going on with this article?

複数の同名CSVファイルをマージするシェル

同じ名称のCSVファイルをマージし、
ソートと重複削除(空白行は削除)するshを作成しました。

①呼び出し元:file_marge_cvs.sh

 こちらで対象のファイルを追記していきます。

#!/usr/bin/bash

#対象のファイル名をこちらに追記していきます
name1=sample1
name2=sample2

#上記で指定したファイル名を引数にshを実行します
 sh file_marge_cvs_sub.sh $name1
 sh file_marge_cvs_sub.sh $name2

echo FINISH_ALL!!
echo $?

②呼び出し先:file_marge_cvs_sub.sh

 メインの処理です。
 ./INPUTでfind
  ⇒./WORKに中間ファイル(同名ファイルをマージしただけ)出力
    ⇒./OUTPUTに最終ファイルを出力します(マージ後のファイルにソートと重複削除)

#!/usr/bin/bash

#ファイル名を引数として取得する
name1=$1
echo $name1
#WORKフォルダ配下についてCSVファイルを検索する
counter=0
for file in `find ./input -name \$name1.csv`;
do
  echo $file
    if [ $counter == 0 ]; then
      cat $file > ./work/${name1}.csv
    else
      cat $file >> ./work/${name1}.csv
    fi
      counter=`expr $counter + 1`
done
#取得したファイルをソートし、マージをかけてoutputフォルダ配下に格納する
sort -t ',' ./work/${name1}.csv | uniq |grep -v '^$'> ./output/${name1}.csv
echo finish!!_$name1
#検索結果を別ファイルに出力する 

※ご参考までにディレクトリ構成を載せておきます。

ディレクトリ構成.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away