Ich möchte ein Wort in einer DOCX-Datei mit einem Shell-Befehl ändern. Ich habe versucht, den sed
Befehl zu verwenden, aber er funktioniert nicht. Kennt jemand eine Lösung dafür?
Zum Beispiel möchte ich ein Wort (z. B. exp5
) ändern und dieses durch ein anderes ( exp3
) in der Datei ersetzen exo.docx
.
linux
text-processing
microsoft-word
Deepshikha
quelle
quelle
.docx
ist eigentlich ein Archiv im Zip-Format. Extrahieren Sie dieword/document.xml
Datei daraus, wenden Sie das sed darauf an und fügen Sie es wieder dem Archiv hinzu. Wikipedia hat weitere Informationen zum Format.Antworten:
Sie möchten also Dinge in einem markenspezifischen Format ersetzen? Auf den ersten Blick sieht es schlecht aus, aber das neue
docx
Format ist dafür etwas besser als das altedoc
Format, da es sich tatsächlich um eine ZIP-Datei handelt, dieXML
Dateien enthält.Die Antwort liegt also darin, es zu entpacken. Dann müssen Sie die Dateien durchsuchen und herausfinden, welche Sie aufrufen
sed
und erneut komprimieren können .Überprüfen Sie die Datei
word/document.xml
in der ZIP-Datei.quelle
sed
auf XML ....sed
es nicht reguläre Grammatiken beschreiben kann, oder? Also vielleicht ist es nicht ganz so schlimm (aber benutze einen Parser!)Versuchen Sie dieses Skript:
und rufen Sie das Skript wie folgt auf:
quelle
Ändern und Reinigung schraubenkarl ‚s Antwort (im Verzeichnis des docx sein muss):
quelle