Linux 명령줄을 사용하여 .DOCX 파일의 단어를 바꾸는 방법은 무엇입니까?

Linux 명령줄을 사용하여 .DOCX 파일의 단어를 바꾸는 방법은 무엇입니까?

쉘 명령을 사용하여 .docx 파일의 단어를 변경하고 싶습니다. 명령 을 사용해 보았지만 sed작동하지 않습니다. 이 문제에 대한 해결책을 아는 사람이 있나요?

예를 들어, 파일에서 단어(예: exp5)를 변경하고 이를 다른 단어()로 바꾸고 싶습니다 .exp3exo.docx

답변1

그렇다면 브랜드별 형식으로 콘텐츠를 교체하고 싶으신가요? 얼핏 보기에는 안 좋아 보이지만 실제로는 파일이 포함된 ZIP 파일이기 때문에 docx이전 형식보다 새로운 형식이 더 좋습니다 .docXML

따라서 답은 압축을 푸는 것입니다. 그런 다음 파일을 살펴보고 어떤 파일을 호출하고 싶은지 찾아 sed다시 압축해야 합니다.

word/document.xmlZIP 파일의 파일을 봅니다 .

답변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

답변3

수정 및 정리슈라우벤카르~의답변(docx 디렉토리에 있어야 함):

find_and_replace() {
    FILE=$1
    FIND=$2
    REPLACE=$3

    unzip "$FILE" -d tmp #unzip
    sed -i '' -e "s/$FIND/$REPLACE/g" tmp/word/document.xml #find/replace
    cd tmp && zip -r ../"$FILE" * && cd .. #zip
    rm -rf tmp
}

관련 정보