文件内容示例(竖线分隔,csv是逗号分隔,可以在shell代码里面修改分隔符)
linenum|name|sex
n001|张三|男
n002|李四|男
n003|王二麻子|男
shell脚本如下
#FILENAME="testfile.txt" 文件名作为入参了
FILENAME=$1
echo ${FILENAME}
LINENUM=0
ARRAYTITLE=""
ARRAYSTR=""
ARRAYLINE=""
list_number=0
#分隔符
FLAG="|"
while read fileline
do
LINENUM=$(($LINENUM+1))
echo "-------------LINENUM:"$LINENUM
if [ ${LINENUM} -eq 1 ];then
#/与/之间为分割的字符 | 另外/后有一个空格不可省略
ARRAYSTR=${fileline//${FLAG}/ }
ARRAYTITLE=($ARRAYSTR);
#遍历数组
list_length=${#ARRAYTITLE[@]}
echo "list_length:"$list_length
for each in ${ARRAYTITLE[*]}
do
echo $each
done
#read fileline
fi
if [ ${LINENUM} -gt 1 ];then
ARRAYSTR=${fileline//${FLAG}/ }
ARRAYLINE=($ARRAYSTR);
for ((i=1;i<$list_length;i++))
do
echo ${ARRAYLINE[0]},${ARRAYTITLE[$i]},${ARRAYLINE[$i]}>>stemp1.csv
done
fi
done < ${FILENAME}
转换后的文件示例:
n001,name,张三
n001,sex,男
n002,name,李四
n002,sex,男
n003,name,王二麻子
n003,sex,男