从命令行编辑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# #a3a3a3 b3b3b3 ' content.xml > content2.xml mv content2.xml content.xml zip -r ../test2.ods .
您需要做的就是用自己的文本片段替换。
较新版本由Terdon提供(它使用变量使其更易读):
$ from=" " $ to="a3a3a3 b3b3b3 " $ sed "s#$from#$to$from#" content.xml
“#”是一个分隔符。 如果文本中有“#”,请使用其他内容。