#!/bin/bash cat $1 | grep "\*TOI\*" | cut -b 22- | sed "s/ /,/g" | sed "s/\.//" | sort -n > $1.tmp COLUMNS=$(cat $1.tmp | awk -F ',' ' { print $2 } ' | sort | uniq) echo -n "pfn," > $1.tmp2 for NAME in $COLUMNS; do echo -n "$NAME," >> $1.tmp2 done echo >> $1.tmp2 FIRST=1 declare -A data while IFS=, read -r pfn column value; do if [ $FIRST -eq 1 ]; then FIRST=0 LAST_PFN=$pfn fi if [ $pfn -ne $LAST_PFN ]; then echo -n "$LAST_PFN," >> $1.tmp2; for NAME in $COLUMNS; do echo -n "${data[$NAME]}," >> $1.tmp2 done data=( ) echo >> $1.tmp2 LAST_PFN=$pfn fi if [ -z "$value" ]; then data[$column]=X else data[$column]=$value fi done < $1.tmp mv $1.tmp2 $1.csv rm $1.tmp LIBREOFFICE=$(which libreoffice) [ -n "$LIBREOFFICE" ] && libreoffice $1.csv &