Skip to main content

docx-shell-parse

Extract text from DOCX files using shell commands when python-docx is unavailable

来源信息

仓库
HKUDS/OpenSpace
最近来源活动
2026年7月17日 03:43
检测到的 SKILL.md 语言
英语
星标
7,753
分支
925

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
2 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
docx-shell-parse
description
Extract text from DOCX files using shell commands when python-docx is unavailable
# DOCX Shell Parsing Workaround When you need to read content from Microsoft Word (.docx) files but python-docx or similar libraries are unavailable, use this shell-based approach to extract text reliably. ## When to Use - Python environment lacks `python-docx` or similar libraries - You need quick text extraction without installing dependencies - Working in constrained environments (containers, minimal images, etc.) ## Core Technique DOCX files are ZIP archives containing XML files. Extract and parse the main document XML: ```bash unzip -p filename.docx word/document.xml | sed -e 's/<[^>]*>//g' ``` ## Step-by-Step Instructions ### 1. Verify the DOCX file exists ```bash ls -la document.docx ``` ### 2. Extract raw XML content Use `unzip -p` to pipe the document.xml content directly to stdout: ```bash unzip -p document.docx word/document.xml ``` ### 3. Strip XML tags from content Pipe through `sed` to remove all XML tags: ```bash unzip -p document.docx word/document.xml | sed -e 's/<[^>]*>//g' ``` ### 4. Clean up whitespace (optional) For cleaner output, remove excessive whitespace and newlines: ```bash unzip -p document.docx word/document.xml | \ sed -e 's/<[^>]*>//g' | \ sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \ sed -e '/^$/d' ``` ### 5. Save extracted text to file ```bash unzip -p document.docx word/document.xml | \ sed -e 's/<[^>]*>//g' > output.txt ``` ## Complete Shell Function Add this reusable function to your scripts: ```bash parse_docx() { local file="$1" if [ ! -f "$file" ]; then echo "Error: File not found: $file" >&2 return 1 fi unzip -p "$file" word/document.xml 2>/dev/null | \ sed -e 's/<[^>]*>//g' | \ sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \ sed -e '/^$/d' } # Usage: parse_docx document.docx ``` ## Limitations - Does not preserve formatting, images, or tables structure - May include some residual XML entity references - Works best for simple text extraction needs - DOCX must be a valid Office Open XML format ## Verification Confirm extraction worked by checking output: ```bash parse_docx document.docx | head -20 ``` ## Alternative: Extract to Temporary Directory For more complex parsing needs: ```bash tmpdir=$(mktemp -d) unzip document.docx -d "$tmpdir" cat "$tmpdir/word/document.xml" | sed -e 's/<[^>]*>//g' rm -rf "$tmpdir" ```
在 GitHub 查看