AWK Problem?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK Problem?
# 1  
Old 09-22-2010
AWK Problem?

Consider this simple use of awk in a shell script
Code:
EJB_USER=`awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}' $ITIM_HOME/data/enRole.properties`

In the file enRole.properties there is a line enrole.appServer.ejbuser.principal=itimadmin

But when I run the shell script and echo $EJB_USER the Output I get is itimadmin itimadmin ..... i.e the 2nd field is printed twice.....I am at my wits end.

Hope any one helps

Last edited by vbe; 09-22-2010 at 06:30 AM.. Reason: code tags please
# 2  
Old 09-22-2010
any other references in your script to this variable ??

could you post more of your script...as awk loooks ok:

Code:
#  x=`echo "enrole.appServer.ejbuser.principal=itimadmin" | awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}'`

#  echo $x
itimadmin

# 3  
Old 09-22-2010
Complete Script

Code:
#!/bin/sh

# Set Env Vars...

APP_SRV_HOME=/usr/WebSphere/AppServer
APP_SRV_TYPE=WAS
JAVA_HOME=/usr/WebSphere/AppServer/java
ITIM_HOME=/usr/IBM/itim
EJB_USER=`awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}' $ITIM_HOME/data/enRole.properties`
EJB_PSWD=`awk -F= '/enrole.appServer.ejbuser.credentials/ {print $2}' $ITIM_HOME/data/enRole.properties`
APP_SRV_URL=`awk -F = '/enrole.appServer.url/ {print $2}' $ITIM_HOME/data/enRole.properties`
APP_SRV_PORT=`awk -F= '/enrole.system.listenPort/ {print $2}' $ITIM_HOME/data/enRole.properties`
TENANT_ID=`awk -F= '/enrole.defaulttenant.id/ {print $2}' $ITIM_HOME/data/enRole.properties`
LDAPSERVER_ROOT=`awk -F'\n' '/enrole.ldapserver.root/ {print substr($1,index($1,"=") + 1,length($1))}' $ITIM_HOME/data/enRole.properties`

echo $EJB_USER
echo $EJB_PSWD
echo $APP_SRV_URL
echo $APP_SRV_PORT
echo $TENANT_ID
echo $LDAPSERVER_ROOT

CP=$JAVA_HOME/jre/lib/ext/jaas.jar

CP=$CP:$ITIM_HOME/extensions/lib/examples.jar

case $APP_SRV_TYPE in
   WAS)
      . $APP_SRV_HOME/bin/setupCmdLine.sh
      SYSTEM_PROPERTIES="-Xbootclasspath/p:$WAS_BOOTCLASSPATH -Djava.ext.dirs=$JAVA_HOME/lib/ext:$JAVA_HOME/jre/lib/ext:$WAS_EXT_DIRS -Djava.naming.provider.url=$APP_SRV_URL -Djava.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory -Dserver.root=$WAS_HOME $CLIENTSAS $USER_INSTALL_PROP"
      LOGIN_CONFIG=jaas_login_was.conf
      PLATFORM_CONTEXT_FACTORY=com.ibm.itim.apps.impl.websphere.WebSpherePlatformContextFactory
      CP=$CP:$ITIM_HOME/lib/api_ejb.jar
      CP=$CP:$ITIM_HOME/lib/itim_api.jar
      CP=$CP:$ITIM_HOME/lib/itim_server.jar
      CP=$CP:$ITIM_HOME/lib/enroleagent.jar
      CP=$CP:$ITIM_HOME/lib/ldapjdk.jar
      CP=$CP:$ITIM_HOME/lib/log4j.jar
      CP=$CP:$ITIM_HOME/lib/jlog.jar
      CP=$CP:$ITIM_HOME/lib/aspectjrt.jar
      CP=$CP:$ITIM_HOME/lib/jffdc.jar
      CP=$CP:$ITIM_HOME/data
      CP=$CP:$ITIM_HOME/lib
      CP=$CP:./reconutility.jar

      CP=$CP:$APP_SRV_HOME/lib/ecutils.jar
      CP=$CP:$APP_SRV_HOME/lib/idl.jar
      CP=$CP:$APP_SRV_HOME/lib/j2ee.jar
      CP=$CP:$APP_SRV_HOME/lib/lmproxy.jar
      CP=$CP:$APP_SRV_HOME/lib/namingclient.jar
      CP=$CP:$APP_SRV_HOME/lib/ras.jar
      CP=$CP:$APP_SRV_HOME/lib/sas.jar
      CP=$CP:$APP_SRV_HOME/lib/utils.jar
      CP=$CP:$APP_SRV_HOME/lib/wssec.jar
      CP=$CP:$APP_SRV_HOME/lib/wsexception.jar
      CP=$CP:$APP_SRV_HOME/lib/bootstrap.jar    
      CP=$CP:$APP_SRV_HOME/properties
   ;;
   WLS)
      SYSTEM_PROPERTIES=
      APP_SRV_URL=$APP_SRV_URL:$APP_SRV_PORT
      LOGIN_CONFIG=jaas_login_wls.conf
      PLATFORM_CONTEXT_FACTORY=com.ibm.itim.apps.impl.weblogic.WebLogicPlatformContextFactory
      CP=$CP:$ITIM_HOME/lib/itim_client.jar

      CP=$CP:$APP_SRV_HOME/lib/weblogic.jar
   ;;
esac

export APP_SRV_HOME JAVA_HOME ITIM_HOME LOGIN_CONFIG CP


Last edited by Franklin52; 09-22-2010 at 07:21 AM.. Reason: adding code tags
# 4  
Old 09-22-2010
odd...

what do you get if you directly run:

Code:
awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}' $ITIM_HOME/data/enRole.properties

Then try

Code:
echo $EJB_USER

EJB_USER=`awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}' $ITIM_HOME/data/enRole.properties`

echo $EJB_USER

and compare against

Code:
grep enrole.appServer.ejbuser.principal $ITIM_HOME/data/enRole.properties

(just to see the full line)

thinking there may be something coming in as you are using = as your delimiter ?
# 5  
Old 09-22-2010
Direct awk Output

Code:
root@e25ciwas031::/> ITIM_HOME=/usr/IBM/itim
root@e25ciwas031::/> awk -F= '/enrole.appServer.ejbuser.principal/ {print $2}' $ITIM_HOME/data/enRole.properties
itimadmin
itimadmin
root@e25ciwas031::/>


Last edited by radoulov; 09-22-2010 at 08:13 AM.. Reason: Code tags, please!
# 6  
Old 09-22-2010
ah - that'll be it... you have two matching lines, so when you set the variable and echo it you're losing the newline:

simple example:

Code:
#  cat infile 
hello
world

#  x=`awk '{print $1}' infile`

#  echo $x
hello world

so... one solution - change the line to:

Code:
EJB_USER=`awk -F= '/enrole.appServer.ejbuser.principal/{t=$2}END{print t}' $ITIM_HOME/data/enRole.properties`

chould work...
# 7  
Old 09-22-2010
Closing the Thread

Hey Image Tytalus ,

Many Thanks for your Support. Am currently using ur solution. But the properties file should not contain double entries. I checked the file and looks like someone copied the whole file over so all the text appears twice. Will need to report it.

But Thank You. Wouldn't have imagined it if you hadn't suggested it.

Have a good day !!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk problem

Hi I have two columns and I would like to create a third column based on how many lines away from a value of 1 in column 2, for example I have 1,0 2,0 3,0 4,0 5,0 6,1 7,0 8,0 9,0 10,0 11,1 And I want an output (6 Replies)
Discussion started by: garethsays
6 Replies

2. Shell Programming and Scripting

awk problem

i have an email list in file.txt with comma separated line1 - FIELD1,pippo@gmail.com,darth@gmail.com line2 - FIELD2,pippo@gmail.com,darth@gmail.com,sampei@gmail.com output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3,$4}' spreadsheet.txt)but awk delete some letters at the... (8 Replies)
Discussion started by: pasaico
8 Replies

3. Shell Programming and Scripting

awk problem - combining awk statements

i have a datafile that has several lines that look like this: 2,dataflow,Sun Mar 17 16:50:01 2013,1363539001,2990,excelsheet,660,mortar,660,4 using the following command: awk -F, '{$3=strftime("%a %b %d %T %Y,%s",$3)}1' OFS=, $DATAFILE | egrep -v "\-OLDISSUES," | ${AWK} "/${MONTH} ${DAY}... (7 Replies)
Discussion started by: SkySmart
7 Replies

4. UNIX for Dummies Questions & Answers

Little problem with AWK

I thought I had solved this problem but after testing the script I came to realize that it is not doing what I need. So, here it goes again. This is the code: awk '/\>/{F=$2; N=$3; split(FILENAME, A, "."); getline; x = ">"}{print ">" A"-" x++" "F" " N"\n" $0}' This is the input file: ... (5 Replies)
Discussion started by: Xterra
5 Replies

5. Shell Programming and Scripting

awk problem

Find the number of files with sizes > 100KB in /, /bin, /usr, /usr/bin and /usr/sbin directories and output them in a two column format with the name of the directory and the number of files. i tried with awk $>ls -lh | awk '/^-/ && $5 >= 100k {print $8 $5}' but it is not working pls tell... (3 Replies)
Discussion started by: abhikamune
3 Replies

6. Shell Programming and Scripting

Problem with awk awk: program limit exceeded: sprintf buffer size=1020

Hi I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it The code is that: { if (NF==17){ print $0 }else{ fields=NF; all=$0; while... (2 Replies)
Discussion started by: fate
2 Replies

7. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies

8. Shell Programming and Scripting

problem using awk

Hi there every body I'm new to shell scripting and there is a problem facing me,, please look at the following piece of code: awk ' BEGIN{ FS="<assertion id=\1"; RS="<assertion id=\"2"}/<assertion id=\"1/{print FS$2 > "/home/ds2/test/output.txt"} ' filename all I wanna do is to... (6 Replies)
Discussion started by: senior_ahmed
6 Replies

9. Shell Programming and Scripting

Problem with AWK

Hi All, How can i store a value of the unix command executed in AWK with system command. devise=`cut -c1-3 dvgp.txt` I wrote this command in awk as awk'{ code= sprintf("devise=`cut -c1-3 dvgp.txt`"); system(code); }' Is this correct. can you please suggest me how the code can be... (1 Reply)
Discussion started by: krishna_gnv
1 Replies

10. UNIX for Dummies Questions & Answers

AWK Problem

Hi, I posted something here about this yesterday but I can't seem to find it. I needed help writting a script which would append a file with new lines after every so many charachters. Example: (my original flat file) L60 LETTER OF CREDIT 60 DAYS W00 ON RECEIPT WIRE TRANSFER W30 NET... (12 Replies)
Discussion started by: gseyforth
12 Replies
Login or Register to Ask a Question