Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何移除杂散^M和<;96>;从文本文件导入sas之前_Unix_Carriage Return_Dos2unix - Fatal编程技术网

Unix 如何移除杂散^M和<;96>;从文本文件导入sas之前

Unix 如何移除杂散^M和<;96>;从文本文件导入sas之前,unix,carriage-return,dos2unix,Unix,Carriage Return,Dos2unix,我从一个用户那里收到一个以管道分隔的文本文件,该用户使用屏幕刮片填充excel电子表格,因此数据非常混乱。它充满了随机的^M(回车)和(windows en dash),导致导入不完整 我已尝试了dos2unix,但收到一个错误,即转换有问题。我使用在本网站上找到的解决方案删除了所有^M: tr -d '\r' < infile > outfile tr-d'\r'outfile 字符保留。对于这些破折号,可比较的'/r'是什么?或者有更好的解决办法?如果可能的话,我实际上想用“

我从一个用户那里收到一个以管道分隔的文本文件,该用户使用屏幕刮片填充excel电子表格,因此数据非常混乱。它充满了随机的
^M(回车)
(windows en dash)
,导致导入不完整

我已尝试了
dos2unix
,但收到一个错误,即转换有问题。我使用在本网站上找到的解决方案删除了所有
^M

tr -d '\r' < infile > outfile
tr-d'\r'outfile

字符保留。对于这些破折号,可比较的
'/r'
是什么?或者有更好的解决办法?如果可能的话,我实际上想用“好”破折号替换“坏”破折号。

为什么不直接用SAS清理文件呢?如果您的行短于32767个字符,那么就很简单了

data _null_;
  infile 'input-file' termstr=LF ;
  file 'output-file' termstr=LF ;
  input;
  _infile_=translate(compress(_infile_,'0D'x),'-','96'x);
  put _infile_;
run;

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

为什么不使用SAS清理文件呢?如果您的行短于32767个字符,那么就很简单了

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个字符一样。

您可以使用命令
cat file.txt | od
获取八进制值,并使用
tr
就像您对^M个字符所做的那样。

您可以共享文本文件的示例和所需输出吗?您可以共享文本文件的示例和所需输出吗?