6.10 --input-format - 指定输入格式
第 6 章 · CLI 标志说明 · 第2部分:命令参考
概述#
--input-format 标志允许您指定输入数据的格式。这对于处理不同格式的数据文件、API 响应或其他结构化数据非常有用。
基本语法#
bash复制claude --input-format 格式>
支持的格式#
| 格式 | 描述 | 使用场景 |
|---|---|---|
text | 纯文本格式(默认) | 一般文本输入 |
json | JSON 格式 | JSON 数据文件 |
yaml | YAML 格式 | YAML 配置文件 |
markdown | Markdown 格式 | Markdown 文档 |
使用场景#
1. 处理 JSON 输入#
bash复制# 从 JSON 文件读取并处理cat data.json | claude --input-format json -p "分析这个数据" # 示例 data.json{"users":[{"id":1, "name":"Alice", "age":30}, {"id":2, "name":"Bob", "age":25}], "total":2} # Claude 会理解这是一个 JSON 结构,并提供相应的分析
2. 处理 YAML 输入#
bash复制# 从 YAML 文件读取并处理cat config.yaml | claude --input-format yaml -p "检查这个配置" # 示例 config.yamlversion: '3.8'services: web: image: nginx:latest ports: - "80:80" db: image: postgres:13 environment: POSTGRES_PASSWORD: secret
3. 处理 Markdown 输入#
bash复制# 从 Markdown 文件读取并处理cat README.md | claude --input-format markdown -p "改进这个文档" # Claude 会理解 Markdown 结构(标题、列表、代码块等)
4. 处理纯文本输入#
bash复制# 默认格式,可以省略 --input-formatcat log.txt | claude -p "分析这个日志" # 或者显式指定cat log.txt | claude --input-format text -p "分析这个日志"## 高级用法### 1. 与 --output-format 组合 ```bash # JSON 输入,JSON 输出cat data.json | claude --input-format json --output-format json -p "转换数据" # YAML 输入,Markdown 输出cat config.yaml | claude --input-format yaml --output-format markdown -p "生成文档" # Markdown 输入,JSON 输出cat README.md | claude --input-format markdown --output-format json -p "提取关键信息"
2. 处理 API 响应#
bash复制# 获取 API 响应并处理curl -s https://api.example.com/users | claude --input-format json -p "分析用户数据" # 处理分页数据curl -s "https://api.example.com/data?page=1"| claude --input-format json -p "总结第一页数据"
3. 配置文件转换#
bash复制# JSON 转 YAMLcat config.json | claude --input-format json --output-format yaml -p "转换为 YAML 格式"> config.yaml # YAML 转 JSONcat config.yaml | claude --input-format yaml --output-format json -p "转换为 JSON 格式"> config.json
4. 数据验证#
bash复制# 验证 JSON 结构cat data.json | claude --input-format json -p "验证 JSON 结构是否正确" # 验证 YAML 配置cat config.yaml | claude --input-format yaml -p "检查配置是否完整"
实际应用示例#
示例 1: 数据分析管道#
bash复制#!/bin/bash# analyze-pipeline.sh # 1. 获取数据curl -s https://api.example.com/data > data.json # 2. 清洗数据cat data.json | claude --input-format json --output-format json -p "清洗数据:移除无效条目,标准化格式"> cleaned.json # 3. 分析数据cat cleaned.json | claude --input-format json --output-format json -p "分析数据:计算统计信息,识别趋势"> analysis.json # 4. 生成报告cat analysis.json | claude --input-format json --output-format markdown -p "生成分析报告"> report.md echo"分析完成:report.md"
示例 2: 配置文件管理#
bash复制#!/bin/bash# config-manager.sh CONFIG_FILE=$1 # 检查配置格式case"$CONFIG_FILE"in *.json)FORMAT="json";; *.yaml|*.yml)FORMAT="yaml";; *)echo"不支持的配置格式"exit1;;esac # 验证配置cat"$CONFIG_FILE"| claude --input-format "$FORMAT" -p "验证配置文件" # 转换为其他格式if["$FORMAT"="json"];thenOUTPUT_FILE="${CONFIG_FILE%.json}.yaml"cat"$CONFIG_FILE"| claude --input-format json --output-format yaml -p "转换为 YAML">"$OUTPUT_FILE"elseOUTPUT_FILE="${CONFIG_FILE%.*}.json"cat"$CONFIG_FILE"| claude --input-format yaml --output-format json -p "转换为 JSON">"$OUTPUT_FILE"fi echo"配置已转换:$OUTPUT_FILE"
示例 3: 日志分析#
bash复制#!/bin/bash# log-analyzer.sh LOG_FILE=$1 # 假设日志是 JSON 格式(每行一个 JSON 对象)cat"$LOG_FILE"| claude --input-format json -p "分析日志:识别错误、警告和异常模式" # 生成分析报告cat"$LOG_FILE"| claude --input-format json --output-format markdown -p "生成日志分析报告"> log-report.md echo"日志分析完成:log-report.md"
示例 4: 文档处理#
bash复制#!/bin/bash# doc-processor.sh DOC_FILE=$1 # 改进文档cat"$DOC_FILE"| claude --input-format markdown -p "改进文档:修复格式错误,改善可读性"> improved.md # 提取关键信息cat"$DOC_FILE"| claude --input-format markdown --output-format json -p "提取关键信息:标题、章节、代码示例"> info.json # 生成摘要cat"$DOC_FILE"| claude --input-format markdown -p "生成文档摘要"> summary.txt echo"文档处理完成"
格式特定技巧#
JSON 格式技巧#
bash复制# 处理嵌套 JSONcat nested.json | claude --input-format json -p "分析嵌套结构" # 处理大型 JSON 文件cat large-data.json | claude --input-format json -p "总结数据结构和内容" # 处理 JSON 数组cat array.json | claude --input-format json -p "分析数组元素"
YAML 格式技巧#
bash复制# 处理多文档 YAMLcat multi-doc.yaml | claude --input-format yaml -p "分析所有文档" # 处理复杂的 YAML 配置cat complex-config.yaml | claude --input-format yaml -p "检查配置依赖关系" # 处理 YAML 锚点和别名cat anchors.yaml | claude --input-format yaml -p "解释锚点和别名的使用"
Markdown 格式技巧#
bash复制# 处理包含代码块的 Markdowncat code-docs.md | claude --input-format markdown -p "检查代码示例" # 处理包含表格的 Markdowncat tables.md | claude --input-format markdown -p "验证表格格式" # 处理包含链接的 Markdowncat links.md | claude --input-format markdown -p "检查所有链接是否有效"
最佳实践#
1. 自动检测格式#
bash复制#!/bin/bash# 根据文件扩展名自动检测格式FILE=$1 case"$FILE"in
bash复制*.json) FORMAT="json" ;; *.yaml|*.yml) FORMAT="yaml" ;; *.md) FORMAT="markdown" ;; *) FORMAT="text" ;;
esac
cat "$FILE" | claude --input-format "$FORMAT" -p "处理这个文件"
bash复制### 2. 格式转换 ```bash # 通用格式转换脚本 convert_format() { INPUT_FILE=$1 OUTPUT_FORMAT=$2 # 检测输入格式 case "$INPUT_FILE" in *.json) INPUT_FORMAT="json" ;; *.yaml|*.yml) INPUT_FORMAT="yaml" ;; *) echo "不支持的输入格式" return 1 ;; esac # 转换 cat "$INPUT_FILE" | claude --input-format "$INPUT_FORMAT" --output-format "$OUTPUT_FORMAT" -p "转换格式" } # 使用 convert_format config.json yaml > config.yaml
3. 批量处理#
bash复制#!/bin/bash# 批量处理文件forfilein *.json;doecho"处理 $file..."cat"$file"| claude --input-format json -p "分析这个文件">"analysis_${file%.json}.txt"done
4. 错误处理#
bash复制#!/bin/bash# 处理格式错误FILE=$1 # 尝试解析RESULT=$(cat"$FILE"| claude --input-format json -p "验证格式"2>&1) ifecho"$RESULT"|grep -q "错误";thenecho"格式错误:$RESULT"exit1fi echo"格式正确"
常见问题#
Q1: 如何知道应该使用哪种输入格式?#
A: 根据文件扩展名或内容判断。.json 文件使用 json,.yaml/.yml 文件使用 yaml,.md 文件使用 markdown。
Q2: 可以混合使用不同格式吗?#
A: 不可以直接混合。如果文件包含多种格式,需要先分割或转换。
Q3: 输入格式错误会发生什么?#
A: Claude 可能无法正确解析输入,导致分析结果不准确。建议先验证格式。
Q4: 如何处理大型文件?#
A: 可以分割文件或使用流式处理。对于非常大的文件,考虑先提取关键部分。
Q5: 可以自定义输入格式吗?#
A: 不可以直接自定义。如果需要处理特殊格式,先转换为支持的格式。
与其他工具的集成#
1. 与 jq 集成#
bash复制# 先用 jq 处理,再用 Claude 分析cat data.json | jq '.users[]'| claude --input-format json -p "分析每个用户"
2. 与 yq 集成#
bash复制# 先用 yq 处理,再用 Claude 分析cat config.yaml | yq '.services.web'| claude --input-format yaml -p "分析 Web 服务配置" ### 3. 与 curl 集成 # 直接处理 API 响应curl -s https://api.example.com/data | claude --input-format json -p "分析响应"
4. 与文件处理工具集成#
bash复制# 使用 find 批量处理find. -name "*.json" -exec cat{}\;| claude --input-format json -p "分析所有 JSON 文件"
总结#
--input-format 标志提供了一种灵活的方式来处理不同格式的输入数据。通过指定正确的输入格式,您可以:
- 让 Claude 更好地理解数据结构
- 进行格式转换和数据验证
- 构建自动化数据处理管道
- 与其他工具和 API 无缝集成
合理使用 --input-format 可以大大提高数据处理的效率和准确性,特别是在处理结构化数据时。