Simple awk question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Simple awk question
# 1  
Old 06-21-2019
Simple awk question

Here is an awk line I have in a bigger script that checks to see if nimsh process is running and does couple other things based on the output and runs on all servers.

Code:
ps -ef|grep -i nimsh|awk '{print $9}'    and I am expecting output to be "/usr/sbin/nimsh"

I find that on some servers because of discrepancy in the 5th field(may in some servers and timestamp in others) , my nimsh becomes 8th or 9th field.

How can i write a statement so that it yields /usr/sbin/nimsh on all servers?


server A:
Code:
root  7274540  6684890   0 14:35:25      -  0:00 /usr/sbin/nimsh -s

server B:
Code:
    root  8061204  4849926   0   May 31      -  0:00 /usr/sbin/nimsh -s

Moderator's Comments:
Mod Comment Please use code tags for your samples as per forum rules.

Last edited by RavinderSingh13; 06-21-2019 at 02:11 PM..
# 2  
Old 06-21-2019
Try using the NF operator, considering the input.

Code:
yourcode .... | awk ' { print $(NF-1) } '

Hope that helps
Regards
Peasant.
# 3  
Old 06-21-2019
If the grep should match the nimsh string in $(NF-1) then consider replacing the whole-line grep by the more precise
Code:
ps -fu root | awk '$(NF-1) ~ /nimsh/ { print $(NF-1) }'

Unlike the catch-all ps -fe the ps -fu root filters for user root.
Even smarter is
Code:
ps -fu root -o args= | grep '[n]imsh'

Note the [n] trick that makes grep not find its own args in the process table.
# 4  
Old 06-22-2019
You could be more precise in the usage of the `ps` command. Instead of using
Code:
ps -ef

(as everybody does) you might specify:
Code:
ps -e -o pid,comm,command

This would give you the pid, the short command and the long command.
# 5  
Old 06-24-2019
Your awk question seems to have been fully and satisfactorily answered, but your task is a different one. Did you ever consider
Code:
pgrep -a nimsh

to test for a running process?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk help - Simple question

I have what a think is a simple question but I'm just a beginner in scripting. I'm my unix command line I run a date command that returns the following: Wed Apr 3 10:39:30 EDT 2013 How do I awk out the "10" only in awk? Or is awk the way to do it or is there a better way? (7 Replies)
Discussion started by: scj2012
7 Replies

2. Shell Programming and Scripting

Simple awk question

Hi All, A very silly question: How to just print the integer attached a particular string in a line by awk? Ex: Happy_world_foo123...So i just want the value 123 to be printed on the line where we have string "foo". Thanks (16 Replies)
Discussion started by: Indra2011
16 Replies

3. UNIX for Dummies Questions & Answers

awk simple question

Can anyone tell me please what the "+" is doing in this awk command? find / -user smith -type f -ls | awk '{ sum += $7 } END {print sum }' Thanks, George (2 Replies)
Discussion started by: george_vandelet
2 Replies

4. UNIX for Dummies Questions & Answers

Simple AWK question

Hi, let's assume i have an output below: orgauser 23826 :E:Validity senerse 2096 senerse 2111 senerse 21585 senerse 21596 root 12653 -bash root 17262 root 17278 Some lines have not any string in their third column. I don't want to see those lines. i just want to see the lines... (3 Replies)
Discussion started by: oduth
3 Replies

5. Shell Programming and Scripting

simple awk question: split field with :

Hi, Probably a very weak question.. but I have tried all I know.. BPC0001:ANNUL_49542 0.0108 -0.0226 -0.0236 0.0042 0.0033 -0.0545 0.0376 0.0097 -0.0093 -0.032 Control BPC0002:ANNUL_49606 0.0190 -0.0142 -0.0060 -0.0217 -0.0027 ... (3 Replies)
Discussion started by: genehunter
3 Replies

6. Shell Programming and Scripting

simple awk/sed/tr question

I have a file CREATE TABLE DDD_EXT --- 1000 ( val u1 val u1 ); CREATE TABLE dsdasd_EXT --- 1323 ( val u1 val u1 ); CREATE TABLE AAAAAA_EXT --- 1222 ( val u1 val u1 ); CREATE TABLE E_EXT --- 11 ( val u1 val u1 (2 Replies)
Discussion started by: jville
2 Replies

7. UNIX for Dummies Questions & Answers

simple awk question

Hi , I have a simple question in awk, i have long string which i am getting for a grep command. the output contains 50 fields. I need to display like first 5 fileds in a line and rest of all fields in the next line. { for(i=5;i<NF;++i) s= $i; print $1,$2,$3,$4,$5,"\n",$s} Is the above... (1 Reply)
Discussion started by: senthilkumar_ak
1 Replies

8. UNIX for Dummies Questions & Answers

simple awk question

Hello, I'm trying to use awk to print lines that match a regular expression. I am using awk to print a record only if it contains N/A. awk '/N/A/ {print $1}' When executed the script returns "awk syntax error near line 1". If I use /N//A/ it prints all records containing a "/", not... (2 Replies)
Discussion started by: orahi001
2 Replies

9. Shell Programming and Scripting

Simple awk If Satement question.

Trying to write an if statement, which calls2 or 3 functions from within it. code: {if (($34 != "") && (NR != 1) && ($1 != "F")) less_than(34, 0, "S1002a") is_number(34,"S1002a") } But this is only treating the first function call, as part of the if. and always executes is_number.... (1 Reply)
Discussion started by: natdeamer
1 Replies

10. Shell Programming and Scripting

Simple awk script question

Hi, I'm a total beginner at awk and hope someone can advise what I have done wrong in the following script: I have a file which (to simplify things) may be something like this Fred Smith and Sue Brown Joe Jones and Jane Watts Sally Green and Jim O? Connor Freda O? Reiley and Pat O?... (2 Replies)
Discussion started by: Bab00shka
2 Replies
Login or Register to Ask a Question