Это может быть лучше для вас, если вы удалите первую строку файла, чтобы избежать обработки заголовков CSV:
#!/bin/bash
while IFS=, read -r ROW1 ROW2
do
echo $ROW1 $ROW2
done < <(sed '1d' export.csv)
Это использует метод, называемый подстановка процесса чтобы передать вывод команды sed
на вход while
.
При этом у меня не возникает проблем с переводами строк в переменные.
Вы можете путать перевод строки, созданный командой echo
. Например, если мы запустим приведенный выше скрипт и передадим вывод в hexdump
, мы увидим, какие символы новой строки действительно существуют:
# ./test.sh | hexdump -C
00000000 61 62 63 20 54 65 73 74 69 6e 67 0a |abc Testing.|
В выводе присутствует один символ перевода строки (0a
) и он создается командой echo. Чтобы доказать это, мы можем добавить флаг -n
к вызову echo
(echo -n $ROW1 $ROW2
) для подавления новой строки:
# ./test.sh | hexdump -C
00000000 61 62 63 20 54 65 73 74 69 6e 67 |abc Testing|
0000000b