help with this one please


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help with this one please
# 1  
Old 11-13-2006
Data help with this one please

Hallo All, this is my code below. The problem happens under section A because field $9 sometimes does not contain a number it contains a (Smilie and a number is contained in field $10 as result under sectionC we get a syntax error @
echo "scale=1; $aa+$ee+$ff"|bc > /tmp/pax/c3.txt

So i need to choose field $9 but if there is no number then I need to choose field $10. Please help.




#!/usr/bin/ksh
#
#Author: Paxley Kekana 01-Nov-2006
#
set -x
#
export NOW=`date +"%Y%m%d_%T"`
#
echo $NOW
#
cd /var/opt/SURGE/logs
ll -ltr som*|tail -1 > /tmp/pax/a.txt
awk '{print $9}' /tmp/pax/a.txt > /tmp/pax/b.txt
#
dd=$(</tmp/pax/b.txt)
#
grep "Interval No. SURs/Sec =" $dd | tail -1 > /tmp/pax/c.txt
awk '{print $10}' /tmp/pax/c.txt > /tmp/pax/d.txt
#
ee=$(</tmp/pax/d.txt)
#
#====================A====A===============================#
#
cd ../../DataBroker/logs
ll -ltr sdb.log*|tail -1 > /tmp/pax/a1.txt
awk '{print $9}' /tmp/pax/a1.txt > /tmp/pax/b1.txt
#
ss=$(</tmp/pax/b1.txt)
#

grep "Output Rate :" $ss | tail -1 > /tmp/pax/c1.txt
awk '{print $9}' /tmp/pax/c1.txt > /tmp/pax/d1.txt
#
ff=$(</tmp/pax/d1.txt)
#
#=====================B=====B===============================#
#
ll -ltr sdb_*.log* |tail -1 > /tmp/pax/a2.txt
awk '{print $9}' /tmp/pax/a2.txt > /tmp/pax/b2.txt
#
gg=$(</tmp/pax/b2.txt)
#
grep "Output Rate" $gg |tail -1 > /tmp/pax/c2.txt
awk '{print $9}' /tmp/pax/c2.txt > /tmp/pax/d2.txt
#
aa=$(</tmp/pax/d2.txt)
#
#======================C=====C===========================
echo
echo
#
#((zz=$ee+$ff+$aa))
#
#echo $zz
echo "scale=1; $aa+$ee+$ff"|bc > /tmp/pax/c3.txt
#
zz=$(</tmp/pax/c3.txt)
echo $zz > /tmp/pax/$NOW.txt

#---------------END-----------------------------------------------#
# 2  
Old 11-13-2006
check for number of fields first and then select accordingly ... if NF -gt 9, set your variable to $9 else set your variable to $10 ...


good luck!
# 3  
Old 11-13-2006
fields

Can you edit my script according to what you are saying?
# 4  
Old 11-13-2006
Code:
cd ../../DataBroker/logs
ll -ltr sdb.log*|tail -1 > /tmp/pax/a1.txt
nfields=`awk '{print NF}' /tmp/pax/a1.txt`
if [ $nfields -gt 9 ]
then
    awk '{print $9}' /tmp/pax/a1.txt > /tmp/pax/b1.txt
else
    awk '{print $10}' /tmp/pax/a1.txt > /tmp/pax/b1.txt
fi
#

# 5  
Old 11-13-2006
wouldn't it be easier to do it ALL in awk:
Code:
awk '{print ((NF > 9) ? $10 : $9) }' /tmp/pax/a1.txt > /tmp/pax/b1.txt

# 6  
Old 11-13-2006
Thnx

You guys are brilliant. Thank you.
Login or Register to Ask a Question

Previous Thread | Next Thread
Login or Register to Ask a Question