Не могу правильно распечатать файл в Bash - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь 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.

Это не происходит с другими файлами и отлично работает на Python.Чего мне не хватает?Как мне заставить его работать?

Я понимаю, что файл не заканчивается символом новой строки, но добавление не исправляет его.

Я нахожусь на Ubuntu 18.04.1 LTS и CLI, который я использую, - это версия Bash 4.4.19 (1).

1 Ответ

0 голосов
/ 31 декабря 2018

В файле данных используются маркеры конца строки в стиле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...