【发布时间】:2018-01-19 00:12:22
【问题描述】:
对于一个项目,我必须使用 xml 格式通过 rest(curl)将数据从 csv 文件获取到 web 系统。 除了一件事,我几乎可以完成所有工作。
我收到的这个项目的文件是一个 .xlsx 文件。我将它导出到 .csv 文件(分隔符分隔)并将编码转换为 UTF-8。原始文件大约有 2000 行和 30 列。
我的策略是在 SLES12 SP2(它是一台测试机)。
csv 采用以下格式(简化): (注意:在一个单元格中包含三行的描述。这就是破坏我的脚本的部分。) curl 命令使用这些换行符创建虚假条目。
大约四分之一的数据有这样的描述。
导出到 csv 后,如果我用 vim 打开文件,文件是这样的:
title|description|firstname
Test|Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat
sed diam voluptua.|Chris
这是我的简化脚本:
file="Kontakte.csv"
# Get the values from the file
arrV[1]=$(cut -d'|' -f1 "$file" | cut -d$'\n' -f2) # Title
arrV[2]=$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2) # Description
arrV[3]=$(cut -d'|' -f3 "$file" | cut -d$'\n' -f2) # First name
echo "### Values ###"
# For reference
echo "Title: " ${arrV[1]}
echo "Description: " ${arrV[2]}
echo "Name: " ${arrV[3]}
我得到的是……
### Values ###
Title: Test
Description: Lorem ipsum dolor sit amet,
Name: Chris
... 而不是这样的:
### Values ###
Title: Test
Description: Lorem ipsum dolor sit amet,\n onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat\n sed diam voluptua.
Name: Chris
我有一个 vba 脚本来摆脱换行符,但这不是一个理想的解决方案。
最好在执行过程中加上一些引号以使其正常工作,例如:
arrV[2]="$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2)"
但我无法解决这样的问题。
您有什么想法,如何处理这些新行吗?还是我唯一的选择是事先在 Excel 中删除换行符?
提前谢谢你。
【问题讨论】:
标签: arrays bash csv newline cut