Как удалить беспризорные ^M и <96> из текстового файла перед импортом в sas
Я получаю текстовый файл с разделителями по конвейеру от пользователя, который заполняет электронную таблицу Excel с использованием скриншотов экрана, поэтому данные беспорядочные. Это полно случайных ^M (carriage returns)
а также <96> (windows en dash)
в результате чего импорт будет неполным.
Я попробовал dos2unix
, и я получаю сообщение об ошибке, что была проблема с преобразованием. Я удалил все ^M
с помощью этого решения я нашел на этом сайте:
tr -d '\r' < infile > outfile
<96>
персонажи остаются. Что было бы сопоставимым '/r'
за эти тире? Или, может быть, есть лучшее решение? Я бы на самом деле хотел бы заменить "плохие" тире на "хорошие" тире, если это возможно.
1 ответ
Почему бы просто не очистить файл с помощью SAS? Если ваши строки короче, чем 32 767 символов, это будет просто.
data _null_;
infile 'input-file' termstr=LF ;
file 'output-file' termstr=LF ;
input;
_infile_=translate(compress(_infile_,'0D'x),'-','96'x);
put _infile_;
run;
Если строки длиннее, вы можете прочитать поле данных по полю и вместо этого исправить это.
Вы можете получить восьмеричное значение с помощью команды cat file.txt | od
и удалите его с помощью tr
точно так же, как и с символами ^M.