从命令行编辑Libreoffice文件

我想从命令行向libreoffice calc表添加行。 但我不知道怎么做。
我刚刚想出如何从命令行启动libreoffice。

例如iam正在寻找: – 之前的test.ods-file

 Name Text Hans Bla Christian BlaBlub 

我进入……

 ubuntu> [a command -insert] Alf|test -file=test.ods 

以便将“Alf”和“test”添加为表格中的下一行。
test.ods-file后:

 Name Text Hans Bla Christian BlaBlub Alf test 

.ods是一个档案。 因此,您需要提取存档。

从文档 :

XML文件结构

OpenDocument文件格式的文档存储为包含XML文件的压缩zip存档。 要查看这些XML文件,可以使用解压缩程序打开OpenDocument文件。 OpenDocument文件中包含以下文件和目录:

  • 文档的文本内容位于content.xml中。

所以它并不那么简单

 [a command -insert] Alf|test -file=test.ods 

因为您还需要插入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 

当您查看content.xml并且想要在最后一行下面添加一个新行时,您需要添加类似这样的内容……

  a2a2a2  b2b2b2  

之前

  

然后再次压缩文件( zip -r ../test2.ods .从包含文件的目录)。

结果:

在此处输入图像描述


要从命令行编辑文件,我使用了此命令。 我把这个例子放在〜/ Downloads中并在那里做了一个tmp /来测试。 所有用于此的命令:

 cd ~/Downloads/tmp/ unzip ../test.ods sed 's##a3a3a3b3b3b3&#' content.xml > content2.xml mv content2.xml content.xml zip -r ../test2.ods . 

您需要做的就是用自己的文本片段替换。


较新版本由Terdon提供(它使用变量使其更易读):

 $ from="" $ to="a3a3a3b3b3b3" $ sed "s#$from#$to$from#" content.xml 

“#”是一个分隔符。 如果文本中有“#”,请使用其他内容。