tabela rotativa de script simples

3

Estou tentando escrever um script simples, que apenas roda a tabela csv. Quer dizer, eu tenho algum arquivo:

head1;head2;head3
field11;field12;field13

e assim por diante. Tudo que eu quero, só para fazer meu arquivo

head1;field11;field21
head2;fielad12;field22
head3;field13;field23

Eu nem tenho ideia de como isso pode funcionar. Eu não peço que você escreva um script, eu preciso de uma idéia sobre como eu posso fazer isso em standart shell (infelizmente eu não sou capaz de usar extensões basmas ou gnu, somente POSIX)

ps. Na verdade eu posso fazer isso, mas apenas de uma maneira feia com um arquivo multirrepreensível e inacreditável com a tabela. Eu acredito que há uma maneira mais bonita.

    
por rush 26.03.2012 / 17:08

2 respostas

1

Aqui está uma rápida adaptação da solução bash para esta questão SO similar para os separadores particulares que você tem (ponto e vírgula):

declare -a array=( )                      # we build a 1-D-array

IFS=';' read -a line < "$1"                       # read the headline

COLS=${#line[@]}                          # save number of columns

index=0
while IFS=';' read -a line ; do
    for (( COUNTER=0; COUNTER<${#line[@]}; COUNTER++ )); do
        array[$index]=${line[$COUNTER]}
        ((index++))
    done
done < "$1"

for (( ROW = 0; ROW < COLS; ROW++ )); do
  printf "%s" ${array[$ROW]}
  for (( COUNTER = ROW+COLS; COUNTER < ${#array[@]}; COUNTER += COLS )); do
    printf ";%s" ${array[$COUNTER]}
  done
  printf "\n" 
done
    
por 26.03.2012 / 17:57
0
flds=3; for((i=1;i<=flds;i++));do
  printf '%s' "$(cut -d';' -f$i file)" |tr '\n' ';';echo
done
    
por 26.03.2012 / 19:50

Tags