我一直在关注如何区分Microsoft Word文档this guide here,但我遇到了这个错误:
Usage: /usr/bin/docx2txt.pl [infile.docx|-|-h] [outfile.txt|-]
/usr/bin/docx2txt.pl < infile.docx
/usr/bin/docx2txt.pl < infile.docx > outfile.txt
In second usage, output is dumped on STDOUT.
Use '-h' as the first argument to get this usage information.
Use '-' as the infile name to read the docx file from STDIN.
Use '-' as the outfile name to dump the text on STDOUT.
Output is saved in infile.txt if second argument is omitted.
Note: infile.docx can also be a directory name holding the unzipped content
of concerned .docx file.
fatal: unable to read files to diff
解释我是如何遇到这个错误的:我在想要传播的存储库中创建了一个.gitattributes。 .gitattributes看起来像这样:
*.docx diff=word
*.docx difftool=word
我已经安装了docx2txt。我在Linux上。我创建了一个名为docx2txt的文件,其中包含:
#!/bin/bash
docx2txt.pl $1 -
我$ chmod a+x
docx2txt我将docx2txt放在/ usr / bin /
我做了:
$ git config diff.word.textconv docx2txt
然后尝试区分两个微软Word文档。那是我收到上面提到的错误的时候。
我错过了什么?如何解决此错误?
PS:我不知道我的shell是否可以找到docx2txt,因为当我这样做时:
$ docx2txt
我的终端冻结,处理某些东西,但没有输出任何东西,当我执行这些命令时会发生这种情况:
$ man docx2txt
No manual entry for docx2txt
$ docx2txt --help
Can't read docx file <--help>!
进度更新:我将docx2txt更改为
#!/bin/bash
docx2txt.pl "$1" -
pmod建议,现在git diff <commit>
从命令行运行!好极了!
但是,当我尝试
$ git difftool <commit>
git启动kdiff3,我收到此弹出错误:
Some input characters could not be converted to valid unicode.
You might be using the wrong codec. (e.g. UTF-8 for non UTF-8 files).
Don't save the result if unsure. Continue at your own risk.
Affected input files are in A, B.
...文件中的所有字符都是mumbo jumbo。命令行正确显示差异文本,但由于某种原因,kdiff3不能正确显示差异文本。
如何在kdiff3或其他gui工具中正确显示diff的文本?我应该将kdiff3更改为其他工具吗?
额外:由于以下命令,我的shell似乎无法找到docx2txt:
$ which doctxt
which: no doctxt in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
$ which docx2txt
/usr/bin/docx2txt
答案 0 :(得分:3)
doc2txt.pl 根据用途需要两个参数或零。在第一个(你的)案例中,参数是文件名或“ - ”。因此,当文件名中至少有一个空格作为第一个参数传递时,您的包装器脚本看起来正确。在这种情况下,扩展 $ 1 后,文件名部分将作为单独的参数传递,因此工具输出使用信息,因为它读取的参数超过2个。
尝试使用引号来避免文件名拆分:
#!/bin/bash
docx2txt.pl "$1" -
PS:我不知道我的shell是否可以找到docx2txt
您可以使用
进行检查$ which docx2txt
如果看到路径,则可以找到工具(二进制或可运行脚本)(基于PATH环境变量)。
因为当我这样做时:
$ docx2txt
我的终端冻结,处理某些内容,但不输出任何内容
如果没有参数,您的脚本将执行 doc2txt.pl - ,根据工具的用法,它会通过STDIN传递输入文件,即您输入的内容。因此,它看起来像悬挂和处理某些东西,但实际上只捕获您的输入。
答案 1 :(得分:0)
您可以使用pandoc转换为markdown
pandoc -f docx -t markdown -o outfile.md infile.docx
然后使用meld这是一个很棒的gui来比较文档
https://askubuntu.com/questions/515900/how-to-compare-two-files
答案 2 :(得分:0)
安装tortoisegit或bcompare。他们可以做差异