Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: spaces in grep command argument executed in backticks

by jakobi (Pilgrim)
on Oct 22, 2009 at 07:33 UTC ( [id://802670]=note: print w/replies, xml ) Need Help??


in reply to spaces in grep command argument executed in backticks

For a general solution surviving not just embedded blanks, check the recent thread on use variables of system and my reply on secure use here.</p.

Then again, you can just move the grep to perl, which takes also care of the issue and allows more powerful regexes. A perl -e "one-liner" example would be e.g.

perl -e '$module=$ARGV[0]; @ps=`ps -eaf`; shift @ps if $ps[0]=~/^UID|^USER/; @ps=grep {/$module/} @ps; $pid=+(split / +/, $ps[0])[1]; warn "pid: $pid"; warn "multiple matches" if $#ps>0; warn @ps' urxvt

Wasn't there a module to abstract from or at least parse ps: the ps output if rather inconsistent when comparing e.g. BSD vs SYSV vs GNU...? Just consider the PID field, which for me is the 2nd field.

Update: stripped the and not /grep/ from the grep, claiming shell muscle memory - ps and a lone grep in one line just feel wrong. @jwkrahn thanx for spotting it!

Replies are listed 'Best First'.
Re^2: spaces in grep command argument executed in backticks
by jwkrahn (Abbot) on Oct 22, 2009 at 07:57 UTC
    @ps=grep {/$module/ and not /grep/} @ps;

    Why would you try to match the string /grep/ when you are using Perl's grep function.    That makes no sense at all.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://802670]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (7)
As of 2024-04-24 20:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found