0

キーワード「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 列に適切に変換されますが、目的の出力を得るために最初の 2 つのタグに改行を含めたいと思います。前もって感謝します。

よろしく、AKS

4

1 に答える 1

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;

この助けを願っています。

于 2016-06-17T10:31:52.243 に答える