关闭

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

3725人阅读 评论(0) 收藏 举报
分类:

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


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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:110257次
    • 积分:1949
    • 等级:
    • 排名:千里之外
    • 原创:67篇
    • 转载:11篇
    • 译文:0篇
    • 评论:33条
    文章分类
    最新评论