Como substituir uma palavra dentro de um arquivo .DOCX usando a linha de comando do Linux?

7

Eu quero mudar uma palavra em um arquivo docx usando um comando shell. Eu tentei usar o comando sed , mas não está funcionando. Alguém sabe uma solução para isso?

Por exemplo, desejo alterar uma palavra (por exemplo, exp5 ) e substituí-la por outra ( exp3 ) no arquivo exo.docx .

    
por deepshikha 17.10.2016 / 08:43

2 respostas

18

Então, você quer substituir as coisas em um formato específico da marca? À primeira vista, parece ruim, mas o novo formato docx é um pouco melhor para isso do que o antigo formato doc , porque na verdade é um arquivo ZIP contendo XML arquivos.

Então a resposta está em descompactá-lo, então você terá que vasculhar os arquivos e descobrir qual deles chamar sed e zipar novamente.

Confira o arquivo word/document.xml no arquivo ZIP.

    
por 17.10.2016 / 08:58
3

experimente este script:

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 

e chame o script da seguinte forma:

./repdocx FILE_NAME OLD_STRING NEW_STRING
    
por 26.02.2017 / 18:49