シェルコマンドを使用して.docxファイルの単語を変更したいと思います。コマンドを試しましたが、sed
動作しません。この問題に対する解決策を知っている人はいますか?
たとえば、ファイル内の単語(たとえばexp5
)を変更し、それを別の単語()に置き換えたいとします。exp3
exo.docx
答え1
それでは、ブランド固有の形式でコンテンツを交換したいですか?一見すると見えませんが、実際にはファイルを含むZIPファイルなので、古いdocx
形式よりも新しい形式が優れています。doc
XML
したがって、答えは解凍することです。その後、ファイルを見て、どのファイルを呼び出したいかを見つけてsed
再圧縮する必要があります。
word/document.xml
ZIPファイルのファイルを表示します。
答え2
次のスクリプトを試してください。
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
次のようにスクリプトを呼び出します。
./repdocx FILE_NAME OLD_STRING NEW_STRING