Проблема чтения данных из файла CSV в сценарии bash - PullRequest
0 голосов
/ 22 января 2020

Я пишу сценарий bash, который будет читать файл CSV и печатать результат в консоли с некоторым конкатенацией строк.

Я сталкиваюсь с одной проблемой, когда одна строка перезаписывает часть другой при конкатенации их в bash скрипт. Ниже приведен весь приведенный код, и я запускаю его в Gitbash, установленном на моем windows.

CSV File1 с двумя строками, указанному ниже

Apple,Cycle
Orange,Lamborgini

Сценарий:

while IFS=, read -r x y
    do
            fruit=$x
            vehicle=$y
            echo "$y ran"
done < File1.csv

Фактический результат:

ranle
ranborgini

Ожидаемый результат:

Cycle ran
Lamborgini ran

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Я обнаружил, что вывод содержит возврат каретки, который необходимо удалить. Для приведенного выше примера это можно сделать с помощью инструмента tr:

 while IFS=, read -r x y                                                                                          
 do
            fruit=$x
            vehicle=$(echo "$y" | tr -d '\r')
            echo "$y ran"
done < File1.csv

И теперь он дает ожидаемый результат.

1 голос
/ 22 января 2020

В Windows файл, вероятно, содержит CLRF windows новые строки с возвратом каретки , а не Unix единицы.

Проверка это SO вопрос и ответы о вариантах преобразования новых строк в файл / строку / строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...