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

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


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


你可能感兴趣的:(DOS,linux)