Удаление перевода строки или возврата каретки из Excel с помощью Perl - PullRequest
0 голосов
/ 22 июня 2011

всякий раз, когда я пытаюсь прочитать строку в файле .csv, он прекращает обрабатывать строку как одну строку и сохраняет ее в нескольких массивах, как предполагается, в один. То, что я вижу, это то, что когда я читаю файл .csv, кажется, что он связывается с возвратом каретки / этими странными квадратами, когда я открываю его в блокноте. Я хочу удалить эти символы из файла, чтобы я мог правильно прочитать .csv, не выходя слишком рано. Как бы я поступил так со скриптом Perl.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Если вы хотите прочитать весь файл одной строкой, просто отключите разделитель входной записи:

local $/;
my $file = <>;

То есть, если вы хотите использовать данные внутри perl. Если вы просто хотите изменить входной файл для использования другими программами, и вам нет дела до перевода строки / возврата каретки:

perl -pi.bak -we 's/[\r\n]+//g' input.csv

Это позволит выполнить редактирование на месте input.csv и сохранить резервную копию в input.csv.bak. Помните, что если вы выполните эту команду дважды, резервная копия будет перезаписана, поэтому сохраните правильную резервную копию где-нибудь еще.

Я бы порекомендовал это, только если вы знаете, что эти символы не должны быть там.

1 голос
/ 22 июня 2011

Вы можете очистить конечные пробелы с помощью функции chomp () в perl. Вы можете использовать что-то вроде этого, чтобы сжать все конечные пробелы и заменить его одной новой строкой:

perl -ne 'while(chomp) { } print "$_\n";' filename.csv
...