При использовании синтаксиса
set datafile separator "chars"
строка не рассматривается как один длинный разделитель.Вместо этого каждый символ , указанный в кавычках, становится отдельным разделителем.От [Janert, 2016]:
Если вы укажете явную строку, то каждый символ в строке будет рассматриваться как символ-разделитель.
Следовательно,
set datafile separator "|||"
фактически эквивалентно
set datafile separator "|"
, а строка
2019-02-05|||123|||456|||789
обрабатывается так, как если бы она имела десять столбцов, из которых только столбцы 1,4,7,10 не пустые.
Обходной путь
Найдите какой-либо другой символ, который вряд ли появится в наборе данных (далее я будупредположим \t
в качестве примера).Если вы не можете сбросить набор данных с помощью другого разделителя, используйте sed
, чтобы заменить |||
на \t
:
sed 's/|||/\t/g' example.data > modified.data # in the command line
, затем выполните
set datafile separator "\t"
и modified.data
в качестве ввода.