您的位置:首页 > 运维架构 > Shell

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

2013-12-05 18:30 841 查看
如果我们在批处理中要处理类似如下数据,我们可以用这个方法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: