从多行读入单行直到遇到分隔符

时间:2017-04-06 14:48:45

标签: sas sas-macro

我一直试图从一个文本文件中读取,该文件包含如下所示的行并且分隔符为分号:

Sun rises
 in the east
  and;
sets in the 
west
;

我正在尝试从单个单独的记录中读取分隔符到分隔符的数据,如下所示   变量名

1 Sun rises in the east and
2 sets in the west

我已尝试使用infile选项提供的几乎所有选项无效。是否可以像上面那样阅读?怎么做?任何线索/帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

recfm=n是告诉SAS没有'换行符'的方法。所以:

data want;
  infile "c:\temp\test.txt" recfm=n dsd dlm=';';
  length text $1024;
  input text $;
run;

请注意,换行符将被读取为另外两个字符,因此如果要删除这些字符,可以使用带有compress选项的c来删除控制字符(包括LF / FF) )。

答案 1 :(得分:0)

逐字阅读并连接成更长的行。

data want ;
  infile mydat end=eof  ;
  length word $200 line $2000 ;
  drop word;
  do while (^eof and ^index(word,';'));
    input word @ ;
    line = catx(' ',line,compress(word,';'));
  end;
  if _n_ > 1 or line ne ' ' then output;
run;