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;

希望对您有所帮助。