如何删除 SAS 中双引号导致的额外 space
How to remove the extra space as a result of double quotes in SAS
我是 SAS 的新手,我正在尝试通过 SAS 程序创建批处理文件。代码如下:
data new;
enddate=date();
getdate=date()+1;
flname1=compress("d:\temp\file"||year(enddate)||put(month(enddate),z2.)||
put(day(enddate),z2.)||".txt");
begdate=enddate-&days;
dtline1=compbl(compress("00:00_"||put(begdate,mmddyy10.))||" "||
compress("00:00_"||put(getdate,mmddyy10.)));
file 'h:\programs\daily_file';
put 'LOGIN abc xyz';
put 'FILE(C:\temp\list.txt)
dtline1 "script.pl("flname1")";
put 'LOGOUT';
Script.pl 是一个 perl 脚本,在生成的批处理文件中,在 flname1
之后有一个额外的 space。它打印出如下内容:
script.pl(d:\temp\file_date ).
我不想要这个额外的 space 日期。我能做什么?
让它正常工作的最简单方法就是将整个命令 (script.pl(filename)
) 放入一个变量中,然后放入该变量。
您也可以在 put 中使用 +(-1) 将线指针向后移动一个,如果它一直偏离一个(尽管大多数时候不需要)。
put "script.pl(" flname1 +(-1) ")";
在写入文件之前创建字符串变量看起来真的很辛苦。您应该能够使用 PUT 语句的功能编写您想要的内容。从问题中不清楚您希望文件具有什么格式,但我认为这段代码模仿了您的程序。
%let days=7 ;
data new;
enddate=date();
getdate=date()+1;
begdate=enddate-&days;
file 'h:\programs\daily_file';
put 'LOGIN abc xyz'
/ 'FILE(C:\temp\list.txt) 00:00_' begdate mmddyy10.
' 00:00_' getdate mmddyy10.
' script.pl(d:\temp\file' enddate yymmddn8. '.txt)'
/ 'LOGOUT'
;
run;
它产生:
LOGIN abc xyz
FILE(C:\temp\list.txt) 00:00_08/14/2015 00:00_08/22/2015 script.pl(d:\temp\file20150821.txt)
LOGOUT
我是 SAS 的新手,我正在尝试通过 SAS 程序创建批处理文件。代码如下:
data new;
enddate=date();
getdate=date()+1;
flname1=compress("d:\temp\file"||year(enddate)||put(month(enddate),z2.)||
put(day(enddate),z2.)||".txt");
begdate=enddate-&days;
dtline1=compbl(compress("00:00_"||put(begdate,mmddyy10.))||" "||
compress("00:00_"||put(getdate,mmddyy10.)));
file 'h:\programs\daily_file';
put 'LOGIN abc xyz';
put 'FILE(C:\temp\list.txt)
dtline1 "script.pl("flname1")";
put 'LOGOUT';
Script.pl 是一个 perl 脚本,在生成的批处理文件中,在 flname1
之后有一个额外的 space。它打印出如下内容:
script.pl(d:\temp\file_date ).
我不想要这个额外的 space 日期。我能做什么?
让它正常工作的最简单方法就是将整个命令 (script.pl(filename)
) 放入一个变量中,然后放入该变量。
您也可以在 put 中使用 +(-1) 将线指针向后移动一个,如果它一直偏离一个(尽管大多数时候不需要)。
put "script.pl(" flname1 +(-1) ")";
在写入文件之前创建字符串变量看起来真的很辛苦。您应该能够使用 PUT 语句的功能编写您想要的内容。从问题中不清楚您希望文件具有什么格式,但我认为这段代码模仿了您的程序。
%let days=7 ;
data new;
enddate=date();
getdate=date()+1;
begdate=enddate-&days;
file 'h:\programs\daily_file';
put 'LOGIN abc xyz'
/ 'FILE(C:\temp\list.txt) 00:00_' begdate mmddyy10.
' 00:00_' getdate mmddyy10.
' script.pl(d:\temp\file' enddate yymmddn8. '.txt)'
/ 'LOGOUT'
;
run;
它产生:
LOGIN abc xyz
FILE(C:\temp\list.txt) 00:00_08/14/2015 00:00_08/22/2015 script.pl(d:\temp\file20150821.txt)
LOGOUT