同じ名称の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
#検索結果を別ファイルに出力する