.ods
é um arquivo. Então você precisará extrair o arquivo.
Na documentação :
estrutura de arquivos XML
Os documentos no formato de arquivo OpenDocument são armazenados como arquivos zip compactados que contêm arquivos XML. Para visualizar esses arquivos XML, você pode abrir o arquivo OpenDocument com um programa de descompactação. Os seguintes arquivos e diretórios estão contidos nos arquivos do OpenDocument:
- O conteúdo do texto do documento está localizado em content.xml.
Portanto, não é tão simples como
[a command -insert] Alf|test -file=test.ods
desde que você também precise inserir as partes XML.
$ cd ~/tmp/
$ unzip ../test.ods
Archive: test.ods
extracting: mimetype
extracting: Thumbnails/thumbnail.png
inflating: settings.xml
inflating: content.xml
inflating: meta.xml
inflating: styles.xml
inflating: manifest.rdf
creating: Configurations2/images/Bitmaps/
creating: Configurations2/toolpanel/
creating: Configurations2/progressbar/
inflating: Configurations2/accelerator/current.xml
creating: Configurations2/floater/
creating: Configurations2/statusbar/
creating: Configurations2/toolbar/
creating: Configurations2/popupmenu/
creating: Configurations2/menubar/
inflating: META-INF/manifest.xml
Quando você olha para o content.xml e deseja adicionar uma nova linha abaixo da última, você precisa adicionar algo assim ...
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a2a2a2</text:p>
</table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b2b2b2</text:p>
</table:table-cell></table:table-row>
antes
<table:named-expressions/>
e, em seguida, feche os arquivos novamente ( zip -r ../test2.ods .
do diretório com os arquivos).
Resultado:
Para editar o arquivo da linha de comando, usei este comando. Eu coloquei o exemplo em ~ / Downloads e fiz um tmp / in para testar. Todos os comandos usados para isso:
cd ~/Downloads/tmp/
unzip ../test.ods
sed 's#</table:table><table:named-expressions/>#<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>&#' content.xml > content2.xml
mv content2.xml content.xml
zip -r ../test2.ods .
Tudo o que você precisa fazer é substituir os segmentos de texto pelos seus próprios.
Versão mais recente cortesia de Terdon (ele usa variáveis para torná-lo mais legível):
$ from="</table:table><table:named-expressions/>"
$ to="<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>"
$ sed "s#$from#$to$from#" content.xml
O "#" é um separador. Se você tiver um "#" no texto, use outra coisa.