【发布时间】:2014-07-15 15:28:36
【问题描述】:
我有以下 CSV 文件:
more my_file.csv
Alabama,Alaska,Arizona,Arkansas,California,Colorado,Connecticut,Delaware,Florida,Georgia,Hawaii,Idaho,Illinois,Indiana,Iowa
1000,"1 0 0 1",1002,1002,1003,1004,1005,"1 0 0 6",1007,1008,1009,1010,1011,1012,1013
100," 1 0 1 ",102,102,103,104,105,"1 0 6 2",107,108,109,"1 1 0 3 5 62 0",111,112,113
10001,10011,10021,10021,10031,10041,10051,10061,10071,10081,10091,10101,10111,10121,10131
.
.
.
.
我的目标是在我的 bash 脚本中设置 CSV 参数(CSV 中的所有状态)及其值
例如(关于第二行值)
在我的 bash 脚本中,我将能够读取每个参数
例子
echo $Alabama
1000
echo $Alaska
1 0 0 1
首先我只是尝试编写以下(错误的)代码,以便设置参数及其值:
#!/bin/bash
counter=1
for CSV_COLUMN in Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa
do
export $CSV_COLUMN=` echo $CSV_LINE | cut -d',' -f$counter `
counter=$counter+1
done
测试应该是(来自 bash 脚本)
echo $Alabama
1000
我应该如何更改我的代码以实现我的想法?
【问题讨论】:
-
CSV 是一种表格格式。为什么
echo $Alabama应该只显示 first 行的字段值? -
IN MY CASE --> 每个参数(CSV 中的第一行)都有一个值(值也可以在“......”之间)
-
为什么要使用 csv 文件中的每一列值创建单独的 shell 变量。不会 awk 更适合处理 csv 文件。
-
我心胸开阔,如果 awk 可以做得更好,请告诉我们? , awk 应该在 bash scipt 中(作为 awk 一行)