LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-05

同じ名称の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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0