Skip to content

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

概述

--input-format 標誌允許您指定輸入資料的格式。這對於處理不同格式的資料檔案、API 響應或其他結構化資料非常有用。

基本语法

bash


claude --input-format <格式>

支持的格式

格式描述使用場景

text| 純文字格式(預設)| 一般文字輸入 json| JSON 格式| JSON 資料檔案 yaml| YAML 格式| YAML 配置檔案 markdown| Markdown 格式| Markdown 文件

bash
## 使用场景

### 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


```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
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
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
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
bash
    #!/bin/bash
    # 根据文件扩展名自动检测格式
    FILE=$1

    case "$FILE" in
        *.json)
            FORMAT="json"
            ;;
        *.yaml|*.yml)
            FORMAT="yaml"
            ;;
        *.md)
            FORMAT="markdown"
            ;;
        *)
            FORMAT="text"
            ;;
    esac

    cat "$FILE" | claude --input-format "$FORMAT" -p "处理这个文件"

### 2\. 格式转换

    bash
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
bash
    #!/bin/bash
    # 批量处理文件
    for file in *.json; do
        echo "处理 $file..."
        cat "$file" | claude --input-format json -p "分析这个文件" > "analysis_${file%.json}.txt"
    done

### 4\. 错误处理

    bash
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` 可以大大提高資料處理的效率和準確性,特別是在處理結構化資料時。

基于 MIT 许可发布 | 永久导航