Please help using awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Please help using awk command
# 1  
Old 11-20-2009
Question Please help using awk command

Hi All,

I have the script below that checks rpm code version that is freshly installed than 1 week ago.

server_list.txt as my arguement ($1)

Script is run like this:
$ ./script_name server_list.txt

here is my script:
#!/bin/bash
QUERY="rpm -qa --queryformat '%{installtime} %{name}-%{version}-%{release}-%{arch} \n'| awk '{ if ( \$1 > '`date -d "1 week ago" +%s`') print \$2 }'"

LIST=`cat $1`
for i in $LIST
do
echo -e "\n$i"
ssh -q root@$i $QUERY
done

Output is like this:
-------------
adminj.pm.test1.intra
vc_portal_admin-jp.test1-2.22_MATADOR.8-0-noarch
xinetd-2.3.14-9.fc6-x86_64

adminj.pm.test2.intra
vc_portal_admin-jp.test2-2.21.22-0-noarch

adminj.pm.test3.intra

logproc.pm.qfe.intra
vc_kron_generator-jp.qfe-1.1.2-0-noarch

-----------
My problem is:

How will I remove the server in the output list that has no rpm freshly
install 1 week ago ? adminj.pm.test3.intra has no new rpm installed 1
week ago.

Can anyone help me to achieve this ?

Last edited by linuxgeek; 11-20-2009 at 02:19 AM..
# 2  
Old 11-20-2009
Try something like this,

Code:
#!/bin/bash
QUERY="rpm -qa --queryformat '%{installtime} %{name}-%{version}-%{release}-%{arch} \n'| awk '{ if ( \$1 > '`date -d "1 week ago" +%s`') print \$2 }'"

LIST=`cat $1`
for i in $LIST
do
var=`ssh -q root@$i $QUERY`
if [ $? = 0 ]
then
 echo -e "\n$i"
 echo -e $var
fi
done

# 3  
Old 11-20-2009
Hi Skmdu,

Thanks .. I've got an idea from your post but I still got the same output.
I modified the part of script like this:

for i in $LIST
do
var=`ssh -q root@$i $QUERY`
if [ $var != "" ]
then
echo -e "\n$i"
echo -e $var
fi
done

but i got this error:

Processing server_list.txt...
./query.sh: line 12: [: !=: unary operator expected

adminj.pm.test1.intra
vc_portal_admin-jp.test1-2.22_MATADOR.9-0-noarch
./query.sh: line 12: [: !=: unary operator expected

adminj.pm.test2.intra
vc_portal_admin-jp.test2-2.21.22-0-noarch

Can you help me to check the problem?
# 4  
Old 11-20-2009
Your script has to be modified like below. then you will get errors.


Code:
for i in $LIST
do
var=`ssh -q root@$i $QUERY`
if [ "$var" != "" ]
  then
     echo -e "\n$i"
     echo -e $var 
fi
done

But in my previous post, I checked the exit status of the last command i.e rpm (QUERY) if its success, then print the machine name and output.

If there is no rpm then $? will be other than 0. I guess, its always better to check exitstatus ($?) instead of output.
# 5  
Old 11-20-2009
I understand what you mean that is to check the exit status,
but the problem is, with or without rpm output, exit status is 0 since
the both command was successful.
# 6  
Old 11-20-2009
linuxgeek, Did you try with this ? Was it resolved?


Quote:
Originally Posted by skmdu
Your script has to be modified like below. then you will not get errors.


Code:
for i in $LIST
do
var=`ssh -q root@$i $QUERY`
if [ "$var" != "" ]
  then
     echo -e "\n$i"
     echo -e $var 
fi
done

# 7  
Old 11-20-2009
Hi Skmdu,

Thanks for your help. My problem has resolved. Using this Smilie

for i in $LIST
do
var=`ssh -q root@$i $QUERY`
if [ "$var" != "" ]
then
echo -e "\n$i"
echo -e $var
fi
done

More power on this forum. It helps a lot.
Thanks!
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pass awk field to a command line executed within awk

Hi, I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date). All my attempts failed this far. Here's an example. It works fine with timestamp hard-codded into the command echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Discussion started by: tuxer
4 Replies

2. Shell Programming and Scripting

Multiple command execution inside awk command during xml parsing

below is the output xml string from some other command and i will be parsing it using awk cat /tmp/alerts.xml <Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Discussion started by: vivek d r
2 Replies

3. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

4. Shell Programming and Scripting

awk command in script gives error while same awk command at prompt runs fine: Why?

Hello all, Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val: > cat getnon0file.sh #!/bin/bash this="getnon0file.sh" USAGE=$this" InFile="xyz.38" Min="0.05" # awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
Discussion started by: catalys
4 Replies

5. Shell Programming and Scripting

awk command for simple join command but based on 2 columns

input1 a_a a/a 10 100 a1 a_a 20 200 b1 b_b 30 300 input2 a_a a/a xxx yyy a1 a1 lll ppp b1 b_b kkk ooo output a_a a/a 10 100 xxx yyy (2 Replies)
Discussion started by: ruby_sgp
2 Replies

6. UNIX for Dummies Questions & Answers

Basic awk question...getting awk to act on $1 of the command itself

I have a script problem that I am not able to solve due my very limited understanding of unix/awk. This is the contents of test.sh awk '{print $1}' From the prompt if I enter: ./test.sh Hello World I would expect to see "Hello" but all I get is a blank line. Only then if I enter "Hello... (2 Replies)
Discussion started by: JasonHamm
2 Replies

7. Shell Programming and Scripting

awk/sed Command : Parse parameter file / send the lines to the ksh export command

Sorry for the duplicate thread this one is similar to the one in https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121 Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Discussion started by: rajan_san
4 Replies

8. Shell Programming and Scripting

assign a command line argument and a unix command to awk variables

Hi , I have a piece of code ...wherein I need to assign the following ... 1) A command line argument to a variable e.g origCount=ARGV 2) A unix command to a variable e.g result=`wc -l testFile.txt` in my awk shell script When I do this : print "origCount" origCount --> I get the... (0 Replies)
Discussion started by: sweta_doshi
0 Replies
Login or Register to Ask a Question