1

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

我试过了dos2unix,我收到一个错误,提示转换有问题。^M我使用在此站点上找到的此解决方案删除了​​所有内容:

tr -d '\r' < infile > outfile

<96>人物还在。'/r'这些破折号的可比性是什么?或者也许有更好的解决方案?如果可能的话,我实际上想用“好”破折号替换“坏”破折号。

4

2 回答 2

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;

如果行较长,您可以逐字段读取数据并进行修复。

于 2016-10-06T18:18:34.810 回答
0

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

于 2019-10-25T07:47:53.887 回答