6.10 --input-format - 指定输入格式

8 分钟阅读

概述#

--input-format 标志允许您指定输入数据的格式。这对于处理不同格式的数据文件、API 响应或其他结构化数据非常有用。

基本语法#

bash
claude --input-format <格式>

支持的格式#

格式描述使用场景
text纯文本格式(默认)一般文本输入
jsonJSON 格式JSON 数据文件
yamlYAML 格式YAML 配置文件
markdownMarkdown 格式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.yaml version: '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-format cat 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 转 YAML cat config.json | claude --input-format json --output-format yaml -p "转换为 YAML 格式" > config.yaml # YAML 转 JSON cat 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 "不支持的配置格式" exit 1 ;; esac # 验证配置 cat "$CONFIG_FILE" | claude --input-format "$FORMAT" -p "验证配置文件" # 转换为其他格式 if [ "$FORMAT" = "json" ]; then OUTPUT_FILE="${CONFIG_FILE%.json}.yaml" cat "$CONFIG_FILE" | claude --input-format json --output-format yaml -p "转换为 YAML" > "$OUTPUT_FILE" else OUTPUT_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
# 处理嵌套 JSON cat 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
# 处理多文档 YAML cat 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
# 处理包含代码块的 Markdown cat code-docs.md | claude --input-format markdown -p "检查代码示例" # 处理包含表格的 Markdown cat tables.md | claude --input-format markdown -p "验证表格格式" # 处理包含链接的 Markdown cat 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 # 批量处理文件 for file in *.json; do echo "处理 $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) if echo "$RESULT" | grep -q "错误"; then echo "格式错误:$RESULT" exit 1 fi 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 可以大大提高数据处理的效率和准确性,特别是在处理结构化数据时。

标记本节教程为已读

记录您的学习进度,方便后续查看。