Interesting awk problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Interesting awk problem
# 1  
Old 05-15-2013
Interesting awk problem

Hello;

I wish to manipulate the output from the following:

Code:
ps axo %mem,pid,euser,cmd|sort -nr
14.4  3170 root     /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
 3.6  3635 root     splunkd -p 8089 start
 2.6  3383 root     /usr/sbin/httpd
 2.1 15496 apache   /usr/sbin/httpd
 2.1 15494 apache   /usr/sbin/httpd
 2.0  3687 root     python -O /ces/splunk/lib/python2.7/site-packages/splunk/appserver/mrsparkle/root.py start
 2.0 15498 apache   /usr/sbin/httpd
 2.0 15497 apache   /usr/sbin/httpd
 2.0 15495 apache   /usr/sbin/httpd
 2.0 15493 apache   /usr/sbin/httpd
 2.0 15492 apache   /usr/sbin/httpd
 2.0 15491 apache   /usr/sbin/httpd
%MEM   PID EUSER    CMD

so that I get :
Code:
%MEM   PID EUSER    CMD
14.4  3170 root     /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
 3.6  3635 root     splunkd -p 8089 start
 2.6  3383 root     /usr/sbin/httpd
 2.1 15496 apache   /usr/sbin/httpd
 2.1 15494 apache   /usr/sbin/httpd
 2.0  3687 root     python -O /ces/splunk/lib/python2.7/site-packages/splunk/appserver/mrsparkle/root.py start
 2.0 15498 apache   /usr/sbin/httpd
 2.0 15497 apache   /usr/sbin/httpd
 2.0 15495 apache   /usr/sbin/httpd
 2.0 15493 apache   /usr/sbin/httpd
 2.0 15492 apache   /usr/sbin/httpd
 2.0 15491 apache   /usr/sbin/httpd

I tried assigning the value of NR for the row containing the string MEM
as follows but not working:

Code:
S=$(ps axo %mem,pid,euser,cmd|sort -nr| awk '/MEM/ {print NR}'|head -1)
ps axo %mem,pid,euser,cmd|sort -nr| awk 'NR == $'$S' || {print $0}'| head
awk: NR == $84 || {print $0}
awk:              ^ syntax error

Any ideas are appreciated .. Thnx
# 2  
Old 05-15-2013
The natural command would be
Code:
ps axk %mem o %mem,pid,euser,cmd

but it does not sort on the %mem column. (Bug?)
Then, restricting sort on a key field can save some memory. (Really?)
Code:
ps axo %mem,pid,euser,cmd | ( head -1 ; sort -nrk 1 )

# 3  
Old 05-15-2013
Code:
ps axo %mem,pid,euser,cmd | awk '{if(NR>1) print | "sort -nrk1,1"; else print}'

# 4  
Old 05-15-2013
Thank you all, that worked
# 5  
Old 05-15-2013
Quote:
Originally Posted by MadeInGermany
Code:
ps axo %mem,pid,euser,cmd | ( head -1 ; sort -nrk 1 )

That's not a dependable approach.

In that situation, since head's standard input is not interactive, head's stdin stream is allowed to be fully buffered. If that is the case, it may consume more than just a single line.

I had this happen to me a few years ago. I thought I had found a bug, but upon further investigation learned that there was a hole in my understanding.

Just a head's up.

This is what POSIX has to say:
Quote:
At program start-up, three streams are predefined and need not be opened explicitly: standard input (for reading conventional input), standard output (for writing conventional output), and standard error (for writing diagnostic output). When opened, the standard error stream is not fully buffered; the standard input and standard output streams are fully buffered if and only if the stream can be determined not to refer to an interactive device.
An demonstration of the issue (old debian system, but I first encountered a similar issue on a BSD system):
Code:
seq 2000 | (head -n2; head -n2)
1
2

1861

Note that due to full buffering, line boundaries are not respected. The first line of the second head's output is empty even though seq does not generate any empty lines.

Regards,
Alister
# 6  
Old 05-17-2013
The following is safe against a buffering "head" command (designed by performance junkies who don't trust the OS buffering mechanisms):
Code:
ps axo %mem,pid,euser,cmd | { read line; echo "$line"; sort -nrk 1; }

NB this time I use { grouping; } not ( subshell ).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Interesting awk/Perl/sed parsing challenge

I have a log with entries like: out/target/product/imx53_smd/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8HTMLVideoElement.cpp : target thumb C++: libwebcore <=... (8 Replies)
Discussion started by: glev2005
8 Replies

2. Solaris

Interesting Disk Error Problem

Hi Folks, Have an interesting problem here, have just upgraded some machines (Test and Development) to the latest and greatest as in. SunOS ss063a 5.10 Generic_147440-13 sun4u sparc SUNW,Sun-Fire-V440 However on all the systems we are seeing the same problems, during the boot there is a... (3 Replies)
Discussion started by: gull04
3 Replies

3. AIX

Interesting Problem! 2 VIOs, One is problematic, assigning disks and resources from the other only

Hi, The scenario is like this: 1.We needed to assign two hdisks to an LPAR 2.SAN team gives us two ldevs 3.One of our VIO is hanging on cfgmgr operation 4. We ran cfgmgr on the smooth VIO. Got the disks and assigned the disks from there to the LPAR.(By passed the other VIO as in didnt run... (11 Replies)
Discussion started by: aixromeo
11 Replies

4. Solaris

Very Interesting Problem

Ok Lets say i have a webpage on a solaris box. and i am trying to make a hyperlink. This hyperlink references a Microsoft Access file on a Windows box. So, How do i make a file reference from The unix box to a windows box. Things to keep in mind -- 1.) Solaris doesnt need to... (6 Replies)
Discussion started by: Demon002
6 Replies

5. Programming

Interesting Problem About Incrementing ++

Here is my code: int startingPort = 200; string tempPort; stringstream out; out<<startingPort; tempPort = out.str(); //tempPort carries startingPort in string format //convert tempPort to *char - currentPort going to be passed into getaddrinfo() char currentPort;... (10 Replies)
Discussion started by: f.ben.isaac
10 Replies

6. Shell Programming and Scripting

interesting problem

Hi, I am new in this forum and I am glad to be a part of it. I have a problem that has two parts: 1/ extract just the timestamp from a filename: for example, I have a file called 'sales20080226144525.txt' and I want to extract just the '20080226144525' part out of it. 2/ Now, take that... (5 Replies)
Discussion started by: ChicagoBlues
5 Replies

7. Shell Programming and Scripting

Interesting problem

Hello, So I'm utilizing the bash brace expansion feature to checkout multiple folders from cvs with ease, while excluding certain subfolders within. So I do a command like this: cvs co trunk/{mod_a,mod_b,mod_c} \!trunk/{mod_a,mod_b,mod_c}/web to checkout modules trunk/mod_a , trunk/mod_b ,... (1 Reply)
Discussion started by: neked
1 Replies

8. SCO

I have an interesting problem and need advice

We have an inhouse built application which handles our AR function. We'd like to email statements out of the application directly. My question is this is there a good, solid, command line driven, scriptable Mail Transport Agent that would allow us to send a semi unique email (with a statement and... (1 Reply)
Discussion started by: Maldain
1 Replies

9. UNIX for Advanced & Expert Users

interesting problem

After a server reboot for regular mainatanance we face the following situation: 1/ user accounts with ksh can't start the korn shell 2/ korn shell scripts do work however, if executed from bash 3/ normal users with bash can't run ksh 4/ root can run ksh 5/ if I switch the default shell to... (3 Replies)
Discussion started by: rein
3 Replies

10. UNIX for Advanced & Expert Users

An interesting problem

hi!, here is an interesting problem ..... I ftp a file named " my first file.doc" from windows to my HP workstation. Ftp is succesful. The file appears with the same name in my home directory.. But now how do I open this file?? while using Vi or More or other editor, they take only the... (5 Replies)
Discussion started by: jyotipg
5 Replies
Login or Register to Ask a Question