awk and basename


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers awk and basename
# 8  
Old 11-23-2011
this jumping back and forth gets confusing after awhile - a better approach:
Code:
ssh_cmd="ssh $host ps aux|awk -v proc="${process}" '{if( gensub( \".*/\", \"\", \$11 ) == proc) print \$9}'"

# 9  
Old 11-23-2011
Quote:
Originally Posted by kaboink
confused here a bit. I'm not grepping the $process anymore before I awk?
that could mean the script would check all process output of ps aux right?
Yes, this means that the awk will be reading all of the output records from the ps command, however this is more efficient than searching for the string with grep and then processing the records with awk. For each record that grep matches, there is an extra write and read of that record to get it into the awk process. In addition, there is the extra overhead of starting grep. Since awk can perform the same 'record matching' function that grep does, it makes more sense to do both the matching and the processing of matched records in the same process. If awk were a process that is not capable of selecting the correct records to work on, then you would need to use grep to do the preprocessing.

For something as small as searching output from the ps command, the difference might not be noticeable, but it's good to practice these more efficient habits all of the time.
# 10  
Old 11-24-2011
Quote:
Originally Posted by agama
I believe that the user will be entering foo and $11 may contain /path/to/foo which needs to be 'basenamed' before comparing. A slight change:

Code:
ssh_cmd="ssh $host ps aux|awk '{if( gensub( \".*/\", \"\", \$11 ) == \"$process\") print \$9}'"

yes,you're right,if user gives the processx as foo
Code:
host=localhost

process=/usr/sbin/sshd
ssh_cmd="ssh $host ps aux|awk '{if(\$11==\"$process\") print \$9}'" && $ssh_cmd
03:19

process=sshd
ssh_cmd="ssh $host ps aux|awk '{if( gensub( \".*/\", \"\", \$11 ) == \"$process\") print \$9}'" && $ssh_cmd
03:19


Last edited by ygemici; 11-24-2011 at 04:33 PM..
# 11  
Old 11-28-2011
will be trying these out... results to follow. thanks!
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

$(basename $0)

what is the meaning of "script_name=$(basename $0)", can someone please explain? (1 Reply)
Discussion started by: abhi200389
1 Replies

2. Shell Programming and Scripting

awk & basename puzzler - advise sought

Hi I have been able generate a file ($ELOG) that can have multiple lines within it. The first column represents the full path source file and the other is the full path target ... the file names are the same but the target directory paths are slightly different. <source_dir1>/file1 ... (4 Replies)
Discussion started by: davidra
4 Replies

3. Shell Programming and Scripting

Difference between $0 and basename

Hi, Could you please help me to know the difference between $0 and basename in unix how they useful in shell scripting. Thanks in advance (3 Replies)
Discussion started by: lnviyyapu
3 Replies

4. UNIX for Dummies Questions & Answers

basename

Hi, can anyone let me know how to interpret the below third line in the following code. Gone through the man pages of "basename", but no go. for f in *.foo; do base=`basename $f .foo` mv $f $base.bar done Thanks. (2 Replies)
Discussion started by: venkatesht
2 Replies

5. Shell Programming and Scripting

extracting basename in awk or nawk

I am having a hard time extracting the file name from the above code. Instead of printing /folder/file.1$.5$, I would like it to print the file name file.1$.5$. I have tried using basename but it looks like NAWK or AWK does not recognise basename. Each time I type it in, it prints out the word... (4 Replies)
Discussion started by: asemota
4 Replies

6. Shell Programming and Scripting

getting basename inside awk script

hi if we have to use basename how can we do this in awk? did the below but is not working.. psg -t "?"| awk '{ command=($5 ~ /^/)? $9:$8 # cmd_name=`basename $command` (gives error) system("basename $command >>... (10 Replies)
Discussion started by: Anteus
10 Replies

7. Shell Programming and Scripting

basename $0

hi, can anyone help me by saying what is basename.. i have seen this in many programs where the basename is used.... thanks, Krips (4 Replies)
Discussion started by: kripssmart
4 Replies

8. Shell Programming and Scripting

basename problem

Hi guys if i do a=`basename -e -s /home/j/john/*` du -k -h $a | sort -nr | head -10 why when i run the script does it work but also say usage basename string any ideas thanks (9 Replies)
Discussion started by: musicmancanora4
9 Replies

9. Shell Programming and Scripting

Using find command with awk or basename

Hi, I am using the following command to extract any log files that are older than 3 days using the following command. find DIR/LOGDIR -type f -mtime +3 |grep LOG > log_list.out The results are DIR/LOGDIR/1.LOG DIR/LOGDIR/2.LOG DIR/LOGDIR/3.LOG DIR/LOGDIR/4.LOG How do inculde (basename... (4 Replies)
Discussion started by: sam_78_nyc
4 Replies

10. Shell Programming and Scripting

reverse of basename

Hi, Can someone let me know how to find the reverse of the basename i.e i have /apps/tiv/pmon/xxxx.dat and I want /apps/tiv/pmon/ Thanks (7 Replies)
Discussion started by: braindrain
7 Replies
Login or Register to Ask a Question