如何去除杂散^ M和< 96>从导入到sas之前的文本文件

时间:2016-10-06 13:32:14

标签: unix carriage-return dos2unix

我从使用屏幕抓取填充excel电子表格的用户收到一个竖线分隔的文本文件,因此数据很乱。它充满了随机^M (carriage returns)<96> (windows en dash),导致导入不完整。

我尝试了dos2unix,但收到错误,指出转换存在问题。我使用此网站上找到的解决方案删除了​​所有^M

tr -d '\r' < infile > outfile

保留<96>个字符。这些破折号的可比性'/r'是多少?或许还有更好的解决方案?如果可能的话,我实际上想用“好”破折号替换“坏”破折号。

2 个答案:

答案 0 :(得分:0)

为什么不用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;

如果线条较长,您可以按字段读取数据字段并修改它。

答案 1 :(得分:0)

您可以使用命令cat file.txt | od获取八进制值,然后像使用^ M个字符一样使用tr将其删除。