Last active
August 30, 2022 08:11
-
-
Save gghatano/50df23f0bb136a74cf1a72792a276b2f to your computer and use it in GitHub Desktop.
PWSCUP2022用のスクリプト群
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# | |
# exec.bash | |
# ============ | |
# | |
# 概要 | |
# PWSCUP2022 メモファイルから匿名化を実行するスクリプト | |
# | |
# 前提 | |
# 0. XXをチームID、YYをデータIDとする | |
# 1. orig_dataYY.csvと、加工関数.pyを配置したフォルダに、本スクリプトを配置する | |
# 2. 同じフォルダにYYYYMMDD_XX_dataYY.txtを作成する | |
# 3. 加工手法とパラメータを記入する | |
# 4. ↓を実行する | |
# | |
# 利用方法: | |
# exec.bash [-h|--help] YYYYMMDD_XX_dataYY.txt | |
# | |
# Function help() shows help | |
help() { | |
awk 'NR > 2 { | |
if (/^#/) { sub("^# ?", ""); print } | |
else { exit } | |
}' $0 | |
} | |
help | |
## メモファイル名を引数に取る | |
memoFileName=$1 | |
echo "" | |
echo "---- ${memoFileName} ----" | |
echo "" | |
## dataXX部分を抽出する | |
dataFileID=$(echo $1 | awk -F"_" '{print $3}' | xargs basename -s .txt) | |
origDataFileName="orig_"${dataFileID}".csv" | |
tmpDataFileName="tmp_"${dataFileID}".csv" | |
anonDataFileName="anon_"${dataFileID}".csv" | |
## 加工中はtmp_とする | |
## 加工後はanon_とする | |
cp ${origDataFileName} ${tmpDataFileName} | |
touch ${anonDataFileName} | |
echo "---- Anonymize Start ---" | |
echo "" | |
cat ${memoFileName} | while read line | |
do | |
## 引数が少なかったら終了 (手法、項目、パラメータ の3種類以上はあるはず) | |
if test ${#line} -lt 2 ; then | |
break | |
fi | |
## 実行できるようにコマンドを組み立てる | |
anonymizeCommand=${line} | |
anonymizeCommand=$(echo ${anonymizeCommand} | sed "s/py/py ${tmpDataFileName} ${anonDataFileName}/") | |
anonymizeCommand=$(echo ${anonymizeCommand} | sed "s/^/python3 /") | |
echo "Execute: "${anonymizeCommand} | |
##tmpfileをいい感じに加工して、anonfileを作成する | |
eval ${anonymizeCommand} | |
## anonfileをtmpfileに反映して、次の加工にわたす | |
cp ${anonDataFileName} ${tmpDataFileName} | |
done | |
echo "" | |
echo "---- Anonymize End---" | |
rm ${tmpDataFileName} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment