BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
kaoru013
Fluorite | Level 6

Dear All,

 

I need to execute a linux command and from de result create a data set:

 

%macro psawk;
%sysexec %str(ps aux | awk '{print $1,$2,$3,$6,$11}' >/SASData/test11.txt);
%mend psawk;
%psawk;

 

from this I get a file with the following structure

 

sas.png

 

Regards,

Abraham

1 ACCEPTED SOLUTION

Accepted Solutions
Shmuel
Garnet | Level 18

Assign filename to the file created by the command and read it into sas:

 

filename result '/SASData/test11.txt';  

data want;
    infile result truncover firstobs=2;
    input user $ @; 
    if user = "USER" then do; input; return; end; /* skip 1st line */
    input  pid cpu rss command $;
run;
    

View solution in original post

7 REPLIES 7
Cynthia_sas
SAS Super FREQ
Hi:
In order to turn this file into a SAS data set, you will have to import it into SAS. You can do this a variety of ways -- either PROC IMPORT or a DATA step program. I would probably use a DATA step program.

What code did you try? What do you want the variables to be named. Note that SAS Variable names should start with a letter or underscore, so %CPU is not a SAS variable name.

cynthia

cynthia
kaoru013
Fluorite | Level 6

thanks for all your help

Shmuel
Garnet | Level 18

Assign filename to the file created by the command and read it into sas:

 

filename result '/SASData/test11.txt';  

data want;
    infile result truncover firstobs=2;
    input user $ @; 
    if user = "USER" then do; input; return; end; /* skip 1st line */
    input  pid cpu rss command $;
run;
    
kaoru013
Fluorite | Level 6

Thanks for your answer, it it works but I have a problem in the command column just put a fragment and not the complete information, this field can have up to 400 characters.

 

Regards

Cynthia_sas
SAS Super FREQ
Hi:
Then you need to have a Length statement:
LENGTH command $400;

Cynthia
Shmuel
Garnet | Level 18

The default length is 8.

Change the $ after command to $400.  (include the dot).

Tom
Super User Tom
Super User

Why create the text file at all?

data want;
    infile "ps aux | awk '{print $1,$2,$3,$6,$11}'" pipe firstobs=2 truncover ;
    input user :$40. pid cpu rss command $500.;
run;

 

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 7 replies
  • 2313 views
  • 3 likes
  • 4 in conversation