我正在尝试echo
链接的内容git@gud:/home/git$ URL="https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv"
git@gud:/home/git$ content=$(wget $URL -q -O -)
git@gud:/home/git$ echo $content
2003,12,31,3,12374_month,day_of_week,births
,它对我来说是奇怪的行为。
2003,12,31,3,12374_month,day_of_week,births
当我在浏览器中打开链接时,我希望这段代码可以打印出我看到的内容。但是,输出的整体是curl
,就是这样。
下载文件后,我实际上也在本地看到了此行为。使用cat
进行了尝试,只需将其复制并粘贴到文本编辑器中并保存文件即可。它们都表现出相同的行为。 cut
,head
,tail
,awk
甚至{{1}}也会发生同样的情况。
这在其他文件中不会发生,并且在Python上可以正常工作。我想念什么?我如何使它工作?
我意识到该文件不是以换行符结尾,但是添加文件并不能解决该问题。
我使用的是Ubuntu 18.04.1 LTS,而我使用的CLI是Bash版本4.4.19(1)。
答案 0 :(得分:3)
数据文件使用Mac样式的行尾标记(仅回车)。当您echo
内容或仅cat
文件时,所有行都在彼此上打印。如果使用less
或vim
查看文件,则将看到完整的内容。
尝试一下:
$ URL="https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv"
$ curl -o data.csv "$URL"
wc
命令认为文件有零行:
$ wc -l data.csv
0 data.csv
现在让我们翻译这些行尾标记:
$ tr '\r' '\n' < data.csv > data-modified.csv
wc
现在看到的行数更加合理:
$ wc -l data-modified.csv
3652 data-modified.csv
如果我们要整理文件:
$ cat data-modified.csv
.
.
.
2003,12,28,7,7645
2003,12,29,1,12823
2003,12,30,2,14438
2003,12,31,3,12374