You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本读取输入并在CSV文件中检索输出对应详情

Shell 脚本实现CSV检索匹配功能方案

功能说明

实现读取用户输入的检索值,在指定CSV文件中匹配对应字段,输出匹配项的其他关联信息。

预设适配说明

默认适配你提供的参考脚本对应的cars.csv规则:

  • CSV字段分隔符为分号;
  • 前2行为表头,从第3行开始是有效数据
  • 示例默认匹配第9列「产地」字段,输出第2列「MPG」和第9列「产地」信息
    你可以根据自己的CSV格式调整对应参数。

优化后可直接使用的脚本

#!/bin/bash
clear
# 读取用户输入的检索值
read -p "请输入要检索的内容:" search_val

# ========== 以下参数可根据你的CSV实际情况自定义修改 ==========
csv_file="cars.csv"          # 你的CSV文件实际路径
delimiter=";"                # CSV字段分隔符,逗号分隔就改为","
skip_header_lines=2          # 需要跳过的表头行数,无表头则填0
match_column=9               # 要匹配的字段序号(从左到右从1开始计数)
# ==========================================================

# 检索+输出逻辑,无需创建临时文件,大文件也能高效处理
awk -F "$delimiter" \
    -v skip_lines="$skip_header_lines" \
    -v match_col="$match_column" \
    -v input_val="$search_val" '
# 跳过指定行数的表头
NR > skip_lines {
  # 匹配到对应字段值相等时输出信息
  if ($match_col == input_val) {
    print "===== 匹配结果 ====="
    print "MPG: " $2
    print "产地: " $9
    # 需输出其他字段直接加行即可,格式为 print "字段说明: " $字段序号,比如 print "气缸数: " $3
  }
}' "$csv_file"

原有参考脚本的问题说明

你提供的原有脚本采用逐行循环读取、生成临时文件的方式,处理大体积CSV时效率很低,优化后的脚本直接用awk处理数据流,不需要生成临时文件,执行效率更高。

内容的提问来源于stack exchange,提问作者Ruth Mary Thannikuzhuppil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:24:06