我有一个场景需要取消数据透视以实现父子关系。我的源数据如下:
Key_Col|层次结构
1|a,b,c,d
2|a,b,c,d,e
我的预期输出如下:
键列 | 孩子 | 家长 |
---|---|---|
1个 | d | C |
1个 | C | b |
1个 | b | A |
1个 | A | 无效的 |
2个 | 电子 | d |
2个 | d | C |
2个 | C | b |
2个 | b | A |
2个 | A | 无效的 |
您能否告诉我如何通过 bash 脚本实现此目的?
我使用的脚本是:
Var="1|a,b,c,d";
for i in $Var
do
Key=`echo $i |cut -d'|' -f1`
Hierarchy=`echo $i |cut -d'|' -f2`
Delim_Count=`echo ${Hierarchy} |awk -F',' '{ print NF-1 }'`
for (( c=$Delim_Count+1; c>=1; c-- ))
do
Parent=`echo ${Hierarchy} |cut -d',' -f$c`
Prev=`expr $c - 1`
if [ $Prev -ne 0 ]; then
Child=`echo ${Hierarchy} |cut -d',' -f${Prev}`
echo "${Key}|${Parent}|${Child}"
else
echo "${Key}|${Parent}|"
fi
done
done
但问题是,如果超过 100 行,脚本就需要很长时间才能完成。