批处理、shell 中分析提取多行数据(csv格式)方法

本文介绍了一种使用批处理脚本解析CSV文件的方法,并对比了在shell环境下的实现方式。通过示例展示了如何读取CSV文件中的数据并进行字段拆分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果我们在批处理中要处理类似如下数据,我们可以用这个方法


data.csv
2,张三,80
4,李四,90


===== 结束 ======
@echo off
set file=data.csv
for %%i in (%file%) do (
    echo config = %%i 
    for /f "tokens=1-3 delims=," %%a in (%%i) do (
        echo 学号=%%a 名称=%%b 成绩=%%c
    )
)


结果如下
config = data.csv
学号=2 名称=张三 成绩=80
学号=4 名称=李四 成绩=90


======================= 分割线 =====================
如果你想把配置写在当前批处理中,可以试试这个方法
@echo off
set list="2,张三,80" "4,李四,90"
for %%i in (%list%) do (
    echo config = %%i 
    for /f "tokens=1-3 delims=," %%a in (%%i) do (
        echo 学号=%%a 名称=%%b 成绩=%%c
    )
)


得到
config = "2,张三,80"
学号=2 名称=张三 成绩=80
config = "4,李四,90"
学号=4 名称=李四 成绩=90


这里格式为: "ID,名称,成绩" 空格 "ID,名称,成绩"
我们先按空格分开各行数据,再在里面按逗号分割
双引号不能删,多行数据只能写在一行里面,因为批处理不支持变量有多行文字


======================= 分割线 =====================

在shell里面就简单明了多了

file=data.csv
IFS=","
while read id name score
do
    echo 学号=$id 名称=$name 成绩=$score
done <  $file


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值