我的unix系统中有4个文本文件,想将数据放入xls文件中并通过邮件发送。
文本1.txt:
100
150
130
120
110
文本2.txt:
200
230
240
250
260
..
..
..
很快 ...
我想要text1.txt
在第一列中包含文件数据,text2.txt
在第二列中包含文件数据,最后想要每行中的数据总和。
答案1
步骤 1:将文件加入多列文件中:
paste f1 f2 f3 > _1.tsv
步骤2:添加计算总和的公式:
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
第三步:检查结果
$ 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
步骤 4:(可能没有必要)如果你确实想要一个.xls
文件:
ssconvert _2.tsv _2.xls
ssconvert
附带gnumeric
精美的电子表格(apt-get install gnumeric
如果需要);多种可用的转换格式。
ssconvert _2.tsv _2.pdf
ssconvert _2.tsv _2.txt
正如预期的那样,这些 txt 和 pdf 文件的公式被其结果替换。
更新:
要获得包含行总和的列,第 2 步可以是:
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)
在哪里:
NR
代表行数(寄存器数)和NF
字段数