Sponsored Content
Full Discussion: using array inside awk
Top Forums Shell Programming and Scripting using array inside awk Post 302222697 by subin_bala on Thursday 7th of August 2008 11:01:41 AM
Old 08-07-2008
Hi Radoluv,

Thnks for ur valuable replies

My next tasks are

getting the IP and USERAGENT value from the command line argument
call function isInFua ( which is internally calling some othe functions)
FInally i need the Return value (RET_VALUE) like 3G or Smartphone or WAP or WEB...

I am attaching the code with ur changes

#!/bin/sh

IPWeb=( 10.66.24.1 10.66.24.3 10.66.24.4 10.66.24.23 10.66.24.35 10.66.24.34 10.66.24.36 10.66.24.38 10.66.17.151 10.66.17.152 10.66.17.153 10.66.17.
154 10.66.17.155 10.66.17.156 10.66.17.147 10.66.17.148 10.66.17.149 10.66.17.150 )

IPMobile=( 10.163.118.159 10.163.118.160 10.163.118.161 10.163.118.162 10.163.118.163 10.163.118.164 10.163.118.165 10.163.118.166 10.163.118.167 10.163.118.
168 10.163.118.169 10.163.118.170 10.163.118.171 10.163.118.172 10.66.24.40 10.66.24.17 10.66.24.19 10.66.24.37 10.66.17.131 10.66.17.132 10.66.17.133 10.66.
17.134 10.66.17.135 10.66.17.136 10.66.17.137 10.66.17.138 10.66.17.139 10.66.17.144 10.66.17.145 10.66.17.146 )

if [ ! -e $_ficParam ] # e means file exists
then
echo $_ficParam file is misssing
exit
fi

if [ "$_pat" == "" ]
then
_pat=intermediatePattern.txt
fi

if [ ! -e $_pat ] # e means file exists
then
echo "intermediatePattern.txt file is not accessibile"
fi

echo _pat : $_pat
IDX=0
IDX_SP=0


awk 'END {
while (++n <= i)
printf "tg_a, element %d: %s\n", n, THREEG_ARRAY[n]
while (++m <= j)
printf "sp_a, element %d: %s\n", m, SP_ARRAY[m]
}
{
if (/^3G/)
THREEG_ARRAY[++i] = $1
else
SP_ARRAY[++j] = $0
}' $_pat



SIZE_THREEG_ARRAY=`echo ${#THREEG_ARRAY[*]}`
SIZE_SP_ARRAY=`echo ${#SP_ARRAY[*]}`

ALL_ARGS=$* # argument from command line

IP=`echo $ALL_ARGS | awk '{print $1}'` # getting value for IP address
USER_AGENT=$(echo $ALL_ARGS | cut -d'"' -f6) # getting value for USER AGENT

var=0
RET_VALUE=""

function isInFua
{
echo VAR --- $var

isSmartPhone # calling function for Smart phone
if [ $var == 1 ]
then
RET_VALUE=SmartPhone
return
fi

isThreeG # calling function for 3G
if [ $var == 1 ]
then
RET_VALUE=3G
return
fi

isFromWAP # calling function for WAP
if [ $var == 1 ]
then
RET_VALUE=WAP
return
fi

isFromWEB # # calling function for WEB
if [ $var == 1 ]
then
RET_VALUE=WEB
return
fi
}

#------------------------------------------------------------------------------#
# Test 3G and 2.5G on a user-agent functions #
#------------------------------------------------------------------------------#

function isSmartPhone
{
for ((i = 0 ; i < $SIZE_SP_ARRAY ; i++))
do
USER_AGENT_VALUE=`echo $USER_AGENT | grep "${SP_ARRAY[$i]}"`
if [ $? = 0 ]
then
var=1
return
fi
done

}


function isThreeG
{
for ((i = 0 ; i < $SIZE_THREEG_ARRAY ; i++))
do
USER_AGENT_VALUE=`echo $USER_AGENT | grep "${THREEG_ARRAY[$i]}"`
if [ $? = 0 ]
then
var=1
return
fi
done

}

function isFromWAP
{
for ((i = 0 ; i < ${#IPMobile[*]} ; i++))
do
IP_MOBILE_VALUE=`echo $IP | grep "${IPMobile[i]}"`
if [ $? = 0 ]
then
var=1
return
fi
done

}

function isFromWEB
{
for ((i = 0 ; i < ${#IPWeb[*]} ; i++))
do
IP_MOBILE_VALUE=`echo $IP | grep "${IPWeb[i]}"`
if [ $? = 0 ]
then
var=1
return
fi
done

}
isInFua
echo RET_VALUE = $RET_VALUE


Can you please go through with this ??
Thanks for the help...
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

looping a array inside inside ssh is not working, pls help

set -A arr a1 a2 a3 a4 # START ssh -xq $Server1 -l $Username /usr/bin/ksh <<-EOS integer j=0 for loop in ${arr} do printf "array - ${arr}\n" (( j = j + 1 )) j=`expr j+1` done EOS # END ========= this is not giving me correct output. I... (5 Replies)
Discussion started by: reldb
5 Replies

2. UNIX for Advanced & Expert Users

Array inside an array

hi All, I have a array as follows, array1=("xx" "abc" "def" "xyz") and each array1 is also storing some array values, like array1=abc and abc=("a" "b" "c") etcetera etcetra......... Note : each subarray under array1 have index 3 i.e. it can max contain 3 values if i echo ${abc} ... (5 Replies)
Discussion started by: manas_ranjan
5 Replies

3. Shell Programming and Scripting

split and making an array inside another array

I want to run an awk split on a value that has been pushed through an array and I was wondering what the syntax should be?? e.g. running time strings through an array and trying to examine just minutes: 12:25:30 10:15:13 08:55:23 awk ' NR==FNR{ ... (2 Replies)
Discussion started by: dcfargo
2 Replies

4. Shell Programming and Scripting

printing array elements inside AWK

i just want to dump my array and see if it contains the values i am expecting. It should print as follows, ignore=345fht ignore=rthfg56 . . . ignore=49568g Here is the code. Is this even possible to do? please help termReport.pl < $4 | dos2ux | head -2000 | awk ' BEGIN... (0 Replies)
Discussion started by: usustarr
0 Replies

5. Shell Programming and Scripting

Calling array inside awk

Hello I have the file df.tmp FS is actually the / FS but escape character\ and end of line $ is used in order to fetch exctly / and not other filesystems. awk '/\/$/ {print $(NF-1)+0}' df.tmp will work properly and return a value eg. 60 but when I am trying to issue the command with the array... (3 Replies)
Discussion started by: drbiloukos
3 Replies

6. Shell Programming and Scripting

unique inside array

I have a file root@server # cat /root/list12 11.22.33.44 22.33.44.55 33.44.55.66 33.44.55.66 33.44.55.66 I try to pass to array and display unique. root@server# cat /root/test12.sh #!/bin/bash #delcare array badips and accumulate values to array elemenrs badips=( $( cat... (4 Replies)
Discussion started by: anil510
4 Replies

7. Shell Programming and Scripting

HELP with AWK one-liner. Need to employ an If condition inside AWK to check for array variable ?

Hello experts, I'm stuck with this script for three days now. Here's what i need. I need to split a large delimited (,) file into 2 files based on the value present in the last field. Samp: Something.csv bca,adc,asdf,123,12C bca,adc,asdf,123,13C def,adc,asdf,123,12A I need this split... (6 Replies)
Discussion started by: shell_boy23
6 Replies

8. Shell Programming and Scripting

How to use variable inside array?

I tried to use variable inside an array variable, but its not working as expected.:wall: ENV1=123 ENV1=789 ENV1=120 ENV2=567 if then name=ENV1 echo "${name}" echo "${name}" echo "${name}" else name=ENV1 echo "${name}" fi Output: ./val.sh 1 123 (2 Replies)
Discussion started by: Jayavinoth
2 Replies

9. UNIX for Dummies Questions & Answers

Array inside sed

Hi guys Let me at first describe the whole thing that I'm trying to do. Lets say I have 100 files like the following one. Ow 1230 16.000000 -0.834000 16.083957 1.751652398 -17.20094528 -4.450623277 Hw 1231 ... (6 Replies)
Discussion started by: saleheen
6 Replies

10. UNIX for Beginners Questions & Answers

sed inside the awk script to replace a string in the array

The requirement is i need to find an array value matching with pattern {5:{ , replace that with 5: and reassign that to same array index and print it. I write something like below and the issue is sed command is not working. If i replace " with "`" the script gives syntax error.how can i... (8 Replies)
Discussion started by: bhagya123
8 Replies
All times are GMT -4. The time now is 07:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy