如何使用 Linux 命令行替换 .DOCX 文件中的单词?

dee*_*kha 8 linux text-processing microsoft-word

我想使用 shell 命令更改 .docx 文件中的单词。我尝试使用该sed命令,但它不起作用。有谁知道解决方案?

例如,我想更改一个单词(例如exp5)并将其替换exp3为文件中的另一个()exo.docx

ori*_*ion 19

那么,您想以特定于品牌的格式替换内容吗?乍一看,它看起来很糟糕,但新docx格式比旧doc格式要好一些,因为它实际上是一个包含XML文件的 ZIP文件。

所以答案在于解压缩它,然后你必须翻遍文件并找出要调用的文件并sed再次压缩它。

签出word/document.xmlZIP 文件中的文件。

  • 我有关于 XML 上的 `sed` 的噩梦...... (4认同)
  • @cat [类似的东西](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454),我假设 (4认同)

小智 5

试试这个脚本:

FILE=$1    
RETPATH=`pwd`    
rm -rf /var/tmp/docx    
mkdir /var/tmp/docx    
cp $FILE /var/tmp/docx
cd /var/tmp/docx    
mkdir tmp
unzip $FILE -d tmp
cd tmp/word
sed -i "s/${2}/${3}/" document.xml
cd ..
zip -r ../${FILE} *
cp /var/tmp/docx/${FILE} ${RETPATH}
cd $RETPATH
rm -rf /var/tmp/docx 
Run Code Online (Sandbox Code Playgroud)

并按如下方式调用脚本:

./repdocx FILE_NAME OLD_STRING NEW_STRING
Run Code Online (Sandbox Code Playgroud)