我想在关键字'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 $30000.
@'<td class="conTd">' details $30000.;
run;
/* data program ends */
et3标签是必需的模式。如果为输入文件运行上述程序,则只会将et3标记正确转换为user_info和details列,但我希望在前两个标记中包含换行符以获得所需的输出。提前致谢。
此致 AKS
答案 0 :(得分:1)
以下是我的解决方案,它基于您的输出数据集inp
,而不是您自己的问题,因为此解决方案无需修改您的输入文件。
基本上,您将输入文件的每一行都读作单个SAS行并从那里操作数据。以您的方便修改记录长度。
data inp;
infile "/sascr/user/me/output.txt" truncover lrecl=200;
input string $200. ;
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;
希望得到这个帮助。