- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试读取 csv 文件:
"EDP";"Picture 1";"Picture 2";"Picture 2"
"1001480210";"T244.png";"";""
我创建了一个脚本来读取这些文件:
cd ~/86829/
while IFS=';' read "EDP" "Picture 1" "Picture 2" "Picture 3"
当我运行脚本时,我得到了这个错误:
./RUN_CopyPictures.sh: 9: read: Picture 1: bad variable name
当我将标题更改为 "Picture1";"Picture2";"Picture2"
,并将脚本更改为 while IFS=';'读取 EDP Picture1 Picture2 Picture3
这是工作
所以我的问题很明确:
我如何读取其中包含 blancs 的 csv 文件的标题?
最佳答案
问题不在于读取“标题”(通常只是 CSV 文件的第一行)。
相反,您的问题(导致错误)是 read x
行将一个值赋给名为 x
的变量(然后可以通过 $x
).
在您的示例中,您使用了 read "Picture 1"
,它有效地尝试为名为 Picture 1
的变量分配一个值。由于 bash 禁止使用空格的变量名(就像任何其他非深奥的编程语言一样),这会给您带来错误。
解决方案是使用易读且合法的变量名:
while IFS=';' read edp pic1 fusel y
do
echo "Picture 1 is ${pic1}"
echo "Picture 2 is ${fusel}"
echo "Picture 3 is ${y}"
done
有许多变量名的命名方案,常见的包括全部小写带有(或不带有)下划线来分隔单词,或者CamelCase.
您的脚本对您所说的“标题”一无所知。CSV 对“标题”也一无所知。CSV 只是一种同时具有行(行)和列的格式,而不是只有行的更简单的文本文件。正如文本文件没有“标题”的概念一样,CSV 文件也没有“标题”。然而,流行的 CSV 导出软件可能会为 CSV 文件中的第一行分配特殊含义,并(滥用)将其用于标题信息(因此内容只是一个标签,而实际的列内容可以是不同的东西)
在任何情况下,IFS=';'阅读 ...
您的部分脚本不会对标题做任何;如果输入数据,它只是从一行中提取多个字段并将这些字段分配给变量。这些变量的名称可以是完全任意的(只要它们符合变量名的 bash 语法),并且不需要与文件的内容有任何关系。
关于linux - 读取里面有 blanc 的 csv 文件标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220486/
我正在尝试读取 csv 文件: "EDP";"Picture 1";"Picture 2";"Picture 2" "1001480210";"T244.png";"";"" 我创建了一个脚本来读取这
我正在开发一个 Excel-2007/VBA 应用程序,其中自定义了 ribon 并且确实遇到了一个大问题。 在我的 Robbpn 中,有 10 个按钮附加了一个 getVisible 回调,一个还有
Apache commons 配置有一个名为 PropertiesConfigurationLayout 的类,它具有 getBlancLinesBefore() 等方法。我认为这是故意的,因为它非常
我正在按照教程编写一个 Angular 应用程序。令我惊讶的是,我完全遵循了,并且我的 Node js 启动正常,没有出现任何问题。但是,我的 Angular 没有按预期返回模板。我看到类似的问题 h
我是一名优秀的程序员,十分优秀!