text para a criação do arquivo xls

0

Eu tenho 4 arquivos de texto no meu sistema unix que querem colocar dados em um arquivo xls e enviá-los via e-mail.

text1.txt:

100
150
130
120
110

text2.txt:

200
230
240
250
260
..
..
..

assim por diante ...

Eu quero ter dados do arquivo text1.txt na primeira coluna, text2.txt dados do arquivo na segunda coluna e, por fim, no final, quero a soma dos dados em cada linha.

    
por Suvendu 04.03.2016 / 05:50

1 resposta

2

Etapa 1: junte os arquivos em um arquivo de várias colunas:

paste f1 f2 f3 > _1.tsv

Etapa 2: adicione uma fórmula para calcular a soma:

gawk '1;END{for(i=0;i<NF;i++)
              {printf("=SUM(%c1:%c%d)\t",65+i,65+i,NR)} print ""}' _1.tsv > _2.tsv

Etapa 3: inspecione o resultado

$ cat _2.tsv
   100 100 100
   ...
   99  99  99
   =SUM(A1:A5) =SUM(B1:B5) =SUM(C1:C5)

$ gnumeric _2.tsv             # excel, whatever your favorite spreadsheet

Etapa 4: (provavelmente não é necessário) se você realmente quiser um arquivo .xls :

ssconvert _2.tsv  _2.xls

ssconvert vem com a planilha gnumeric fantastic ( apt-get install gnumeric , se necessário); Vários formatos de conversões disponíveis.

ssconvert _2.tsv  _2.pdf
ssconvert _2.tsv  _2.txt

Como esperado, esses arquivos txt e pdf têm fórmulas substituídas por seus resultados.

Atualização:

para ter uma coluna com a soma da linha, a Etapa 2 poderia ser:

gawk '{printf("%s\t=SUM(A%d,%c%d)\n", $0, NR, NF+64, NR)}' < _1.tsv
 100    1   90  =SUM(A1,C1)
 241    2   23  =SUM(A2,C2)
 312    3   3   =SUM(A3,C3)

onde:

  • NR representa o número da linha (Número de registro) e
  • NF Número de campos
por 04.03.2016 / 10:31