Unix 如何移除杂散^M和<;96>;从文本文件导入sas之前
我从一个用户那里收到一个以管道分隔的文本文件,该用户使用屏幕刮片填充excel电子表格,因此数据非常混乱。它充满了随机的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'是什么?或者有更好的解决办法?如果可能的话,我实际上想用“
^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个字符所做的那样。您可以共享文本文件的示例和所需输出吗?您可以共享文本文件的示例和所需输出吗?