SAS数据步骤自由格式问题
SAS Data step free format issue
只有当关键字 'data-base-url' 没有时,我才想在关键字前添加一个换行符。
输入文件
</html>
<et1>
<a data-linked-resource-type="userinfo" data-base-url="https://url.com/c">USERNAME 1</a>
<td class="conTd">
INFO 1
</td>
</et1>
<et2>
<a data-linked-resource-type="userinfo"
data-base-url="https://url.com/c1">USERNAME 2</a>
<td class="conTd">
INFO 2
</td>
</et2>
<et3>
<a data-linked-resource-type="userinfo"
data-base-url=
"https://url.com/c2">USERNAME 3</a>
<td class="conTd">
INFO 3
</td>
</et3>
</html>
/* data program */
data inp;
infile "c:/tmp/output.txt";
input @'data-base-url=' user_info 000.
@'<td class="conTd">' details 000.;
run;
/* data program ends */
et3 标签是必需的模式。如果您 运行 输入文件的上述程序,您将只得到 et3 标签被正确转换为 user_info 和详细信息列,但我想在前两个标签中包含换行符获得所需的输出。提前致谢。
此致,
AKS
这是我的解决方案,它基于您的输出数据集 inp
而不是您的问题本身,因为使用此解决方案无需修改您的输入文件。
基本上,您将输入文件的每一行作为单个 SAS 行读取并从那里操作数据。随意修改记录长度。
data inp;
infile "/sascr/user/me/output.txt" truncover lrecl=200;
input string 0. ;
lstr = lag(string);
if lstr='<td class="conTd">' then details = string;
if string='<td class="conTd">' then _info = lstr;
user_info = scan(lag(_info),-1,'=');
if length(strip(details))>1 then output;
keep details user_info;
run;
希望对您有所帮助。
只有当关键字 'data-base-url' 没有时,我才想在关键字前添加一个换行符。
输入文件
</html>
<et1>
<a data-linked-resource-type="userinfo" data-base-url="https://url.com/c">USERNAME 1</a>
<td class="conTd">
INFO 1
</td>
</et1>
<et2>
<a data-linked-resource-type="userinfo"
data-base-url="https://url.com/c1">USERNAME 2</a>
<td class="conTd">
INFO 2
</td>
</et2>
<et3>
<a data-linked-resource-type="userinfo"
data-base-url=
"https://url.com/c2">USERNAME 3</a>
<td class="conTd">
INFO 3
</td>
</et3>
</html>
/* data program */
data inp;
infile "c:/tmp/output.txt";
input @'data-base-url=' user_info 000.
@'<td class="conTd">' details 000.;
run;
/* data program ends */
et3 标签是必需的模式。如果您 运行 输入文件的上述程序,您将只得到 et3 标签被正确转换为 user_info 和详细信息列,但我想在前两个标签中包含换行符获得所需的输出。提前致谢。
此致, AKS
这是我的解决方案,它基于您的输出数据集 inp
而不是您的问题本身,因为使用此解决方案无需修改您的输入文件。
基本上,您将输入文件的每一行作为单个 SAS 行读取并从那里操作数据。随意修改记录长度。
data inp;
infile "/sascr/user/me/output.txt" truncover lrecl=200;
input string 0. ;
lstr = lag(string);
if lstr='<td class="conTd">' then details = string;
if string='<td class="conTd">' then _info = lstr;
user_info = scan(lag(_info),-1,'=');
if length(strip(details))>1 then output;
keep details user_info;
run;
希望对您有所帮助。