ひさしぶりにシェルを組んだ

イシュー

  • csvチェックボックスのnameと複数選択項目のvalueが記載されているデータがある
  • nameとvalueの関係は1対多なので、同一nameがcsvに並んでいる
  • これをname 1に対して、区切り文字;(セミコロン)で連結したvalueのcsvに作り替える

shell

prev_name=
join_value=
delm=

while IFS=, read name value
do

if (test "$name" != "$prev_name"); then
echo $prev_name","$join_value
join_value=
delm=
fi

prev_name=$name
join_value=${join_value}${delm}${value}
delm=\;

done < org.csv

#last line
echo $prev_name","$join_value

参考