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: 配置文件管理
bashbash
#!/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: 日志分析
bashbash
#!/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: 文档处理
bashbash
#!/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\. 格式转换
bashbash
# 通用格式转换脚本
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\. 批量处理
bashbash
#!/bin/bash
# 批量处理文件
for file in *.json; do
echo "处理 $file..."
cat "$file" | claude --input-format json -p "分析这个文件" > "analysis_${file%.json}.txt"
done
### 4\. 错误处理
bashbash
#!/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` 可以大大提高資料處理的效率和準確性,特別是在處理結構化資料時。