Skip to content

Instantly share code, notes, and snippets.

@gghatano
Last active August 30, 2022 08:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gghatano/50df23f0bb136a74cf1a72792a276b2f to your computer and use it in GitHub Desktop.
Save gghatano/50df23f0bb136a74cf1a72792a276b2f to your computer and use it in GitHub Desktop.
PWSCUP2022用のスクリプト群
#!/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