私のUnixシステムには4つのテキストファイルがあり、データをxlsファイルに入れてメールで送信しようとしています。
テキスト1.txt:
100
150
130
120
110
テキスト2.txt:
200
230
240
250
260
..
..
..
まもなく...
text1.txt
最初の列にファイルデータを、text2.txt
2番目の列にファイルデータを、最後に各行のデータを合計したいと思います。
答え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
ステップ3:結果を確認する
$ 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
フィールド数