【发布时间】:2019-03-17 22:36:55
【问题描述】:
我想使用 Bash 读取 csv 并将每个值存储到一个变量中以供进一步处理。 我的 csv 文件如下所示,所有值都是唯一的。
> val1-row1,val2-row1,val3-row1,val4-row1....valn-row1
> val1-row2,val2-row2,val3-row2,val4-row2....valn-row2
下面是我的代码
while IFS=, read eachvalue;
do
if [ "$eachvalue" = "something" ]
then
echo "do something"
else
echo "do something else"
fi
done < allvalues.csv
我无法读取每个值并为 csv 文件中的每个值执行 if 条件。谢谢你的帮助。
【问题讨论】:
-
如果您能告诉我们您的完整要求,我们很可能只需要一个 awk 或 sed 等就可以做到这一点。所以请编辑您的帖子并提供更多详细信息。
-
我的 csv 文件包含具有多列的唯一值,值中没有引号或破折号。每个值都用逗号分隔。都是唯一值。我想将每个值读入一个变量(仅变量)并检查另一组值(它们来自另一个文件)。如果两者都匹配,我会执行某些回显命令。再次感谢!
-
“唯一变量”是什么意思?如果您正在检查从另一个文件读取的集合,在本机 bash 调用中有效地执行此操作以使用关联数组,或者完全更改您的工具集(如果您专注于吞吐量,完全放弃 bash 并以 100 % awk -- 不是 awk-embedded-in-bash -- 是一个不错的选择)。
标签: bash