【问题标题】:Performing conditional change in .ods file in bash在 bash 中对 .ods 文件执行条件更改
【发布时间】:2016-07-30 16:30:02
【问题描述】:

如何在 .ods 文档中进行有条件的更改?我有两列。其中一个存储一个字符串,第二个存储一个值。我想用我拥有的特定字符串搜索文档,比如“xyz”。如果这与第一列中显示的任何字符串匹配,我希望从同一行中的单元格中扣除 1 的值,但从第二列中扣除。 .ods 文档中的数据由不同的相邻单元格分隔(所以是选项卡?)

例如,考虑以下内容:

xyz 23
xxy 42
xzz 76

如果我有字符串“xxy”,我希望 bash 脚本更新 .ods 文件,使其看起来像这样:

xyz 23
xxy 41
xzz 76

现在,我正在搜索的字符串存储在单独的 .txt 文件中。我想遍历 .txt 文件中的所有字符串并重复执行 .ods 文件中描述的操作。可能存在相同字符串多次出现的情况。有什么帮助吗?

【问题讨论】:

  • UNIX 工具适用于文本文件,而不是 Excel 文件。您可以从 Excel 导出 CSV,然后使用 UNIX 工具处理 CSV,然后将结果重新导入 Excel,但您不能直接使用 UNIX 工具处理 Excel 文件。

标签: bash awk sed ods


【解决方案1】:

这应该是评论,但有点长

我正在搜索的内容存储在一个文本文件中。

没有。 MS Excel 文件不是文本文件。它甚至不是一个文件,而是一个嵌入式文件系统,其中内容被封装在 OLE 中,或者最近作为 xml 树封装。虽然在 Unix 上同时提供 OLE 和 XML 解析器(我假设您想在 Linux/Unix/Posix 上运行它,因为您已经用 bash、awk 和 sed 标记了它)只是让您可以访问数据的存储位置。您仍然需要详细了解文件格式才能进行更改。虽然可以在 bash 中执行此操作,但使用专用编程语言会容易得多。有几个确实带有用于处理 Excel 文件的库,但它们对文件格式的支持各不相同。或者,您可以使用其 UNO API 在 openoffice 中加载它。

【讨论】:

  • 要搜索的字符串位于 .txt 文件中。我想将这些字符串与可以在 Excel 文件中找到的字符串进行匹配,并执行所描述的操作。我有 2 个单独的文件。一个是字符串列表(文本文件),另一个是字符串的数量属性(Excel 文件)
猜你喜欢
  • 2017-12-13
  • 2014-04-25
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 2018-02-26
相关资源
最近更新 更多