【发布时间】:2019-03-19 01:48:36
【问题描述】:
我写了一个脚本来把 .CSV 改成 json。
#!/bin/bash
exec 0< example.csv
while IFS=, read name element input decrease
do
echo "${element}decrease: ${decrease}test"
done
我在此处粘贴的 example.csv
name1,A,11,12
name2,B,13,14
但是输出真的很奇怪……
testrease: 12
testrease: 14
如您所见,test 重写 Adecrease 和 Bdecrease,使它们成为 testrease。
我不敢相信!!所以我尝试不使用exec 0< example.csv,在标准输入中输入它们,这次我得到了我想要的
name1,A,11,12
Adecrease: 12test
所以我想也许 example.csv 中有一些字符我看不出是什么导致了这个问题。我用cat -v example.csv
name1,A,11,12^M
name2,B,13,14^M
没什么奇怪的,我就卡在这里了。
我对shell脚本很陌生,所以如果有人能给我一些建议,我会非常激动!!
【问题讨论】:
-
`^M`看起来不奇怪?
-
这是tag wiki 在发布问题之前要求您检查的第一件事。
-
谢谢你们,伙计们!好像我犯了一个愚蠢的错误....当我使用 vim 并设置 invlist 时,它并没有让我感到恶心 '^M'。
-
在 vim 中,您可以运行
:set fileformat=unix以使您的文件在下次保存时使用 UNIX 换行符写入。大概它被自动检测为fileformat=dos,所以 vim 将 CR 视为正常(对于 DOS 文本文件,而不是 UNIX 文件),因此当您启用显示不可见字符时它们不会显示。
标签: linux bash shell newline carriage-return