2016-07-29 5 views
1

У меня есть сценарий bash, который записывает некоторые данные, извлеченные из необработанных файлов журнала в файл в формате csv. Теперь я хочу применить формулы libreoffice calc для этого набора данных. Моя идея состоит в том, чтобы написать формулу «raw» calc в файле csv непосредственно из сценария bash (используя «;» [точка с запятой] вместо «,» [запятая], чтобы разделить данные, чтобы не нарушать формулы). Поэтому у меня есть сценарий, как это (например):Scripting libreoffice calc formula в csv

#!/bin/bash 
for ((i=1; i<=5; i++)) 
do 
    echo "$i; $((i+1)); =SUM(A$i, B$i)" >> sum.csv 
done 

Выполнение этого сценария дает этот sum.csv файл:

1; 2; =SUM(A1, B1) 
2; 3; =SUM(A2, B2) 
3; 4; =SUM(A3, B3) 
4; 5; =SUM(A4, B4) 
5; 6; =SUM(A5, B5) 

Когда я открываю его с известково, это дает ожидаемый результат с каждым значением отделенного в одной ячейке. Но проблема в том, что формулы не оцениваются. Даже ручное редактирование ячейки не вызывает оценку. Единственное, что нужно сделать, это скопировать формулы без '=' и вручную записать '=', а затем вставить формулы.

Я пробовал использовать INDIRECT(), но это не помогло.

Есть ли способ принудительно оценить формулы? Или есть какой-то другой способ делать то, что я хочу (не изучая новый язык ...)?

ответ

2

Он должен работать после удаления ведущего пространства перед значком равенства. Третье поле в настоящее время имеет содержимое =SUM(A1, B1) (обратите внимание на ведущее пространство). LO будет признавать формулу, если содержание начинается с = вместо =:

1;2;=SUM(A1, B1) 
2;3;=SUM(A2, B2) 
3;4;=SUM(A3, B3) 
4;5;=SUM(A4, B4) 
5;6;=SUM(A5, B5)