Script help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script help
# 1  
Old 04-20-2009
Script help

#!/bin/ksh
###########################################
###########################################
for i in $(<passwdfile)
do
egrep -f users.dat $i
if [[ $? == 0 ]]
then
echo $i
fi
done >> outputfile
OUTPUT:
ABC:::::: ------------> ID ABC found
abc_etc_passwd -------------> File in which ABC id is found
XYZ::::::: ------------> ID XYZ found
zXY:::::: ------------> ID ZXY found
XYZ_etc_passwd ------------> File in which IDs XYZ & ZXY are found
IJK::::::
KLM::::::
test_etc_passwd

I want to get output like this.
ABC::::::|abc_etc_passwd
XYZ:::::::|XYZ_etc_passwd
zXY::::::|XYZ_etc_passwd
IJK::::::|test_etc_passwd
KLM::::::|test_etc_passwd
please reply
# 2  
Old 04-20-2009
Please help

Quote:
Originally Posted by zenith
#!/bin/ksh
###########################################
###########################################
for i in $(<passwdfile)
do
egrep -f users.dat $i
if [[ $? == 0 ]]
then
echo $i
fi
done >> outputfile
OUTPUT:
ABC:::::: ------------> ID ABC found
abc_etc_passwd -------------> File in which ABC id is found
XYZ::::::: ------------> ID XYZ found
zXY:::::: ------------> ID ZXY found
XYZ_etc_passwd ------------> File in which IDs XYZ & ZXY are found
IJK::::::
KLM::::::
test_etc_passwd

I want to get output like this.
ABC::::::|abc_etc_passwd
XYZ:::::::|XYZ_etc_passwd
zXY::::::|XYZ_etc_passwd
IJK::::::|test_etc_passwd
KLM::::::|test_etc_passwd
please reply

Please help
# 3  
Old 04-20-2009

Please put code inside [code] tags.
Quote:
Code:
#!/bin/ksh
###########################################
###########################################
for i in $(<passwdfile)


That will fail if any lines contain spaces (as is very likely in a passwd file).
Quote:
Code:
do
egrep -f users.dat  $i
if [[ $? == 0 ]]
then
echo $i
fi
done >> outputfile

OUTPUT:
ABC:::::: ------------> ID ABC found
abc_etc_passwd -------------> File in which ABC id is found
XYZ::::::: ------------> ID XYZ found
zXY:::::: ------------> ID ZXY found
XYZ_etc_passwd ------------> File in which IDs XYZ & ZXY are found
IJK::::::
KLM::::::
test_etc_passwd

I want to get output like this.
ABC::::::|abc_etc_passwd
XYZ:::::::|XYZ_etc_passwd
zXY::::::|XYZ_etc_passwd
IJK::::::|test_etc_passwd
KLM::::::|test_etc_passwd
Code:
xargs grep -E -f users.dat /dev/null < passwdfile |
 while IFS-: read file line
 do
   printf "%s|%s\n" "$line" "$file"
 done

# 4  
Old 04-20-2009
Quote:
Originally Posted by cfajohnson
Please put code inside [code] tags.
That will fail if any lines contain spaces (as is very likely in a passwd file).
Code:
xargs grep -E -f users.dat /dev/null < passwdfile |
 while IFS-: read file line
 do
   printf "%s|%s\n" "$line" "$file"
 done

Sir,

I have more than 100 /etc/passwd files of different servers and all the names are in file named "passwdfile"

I think the code you wrote is assuming "passwdfile" as one file /etc/passwd.

I am getting errors.

can you please help me with this.
# 5  
Old 04-20-2009
Quote:
Originally Posted by cfajohnson
Please put code inside [code] tags.
That will fail if any lines contain spaces (as is very likely in a passwd file).
Code:
xargs grep -E -f users.dat /dev/null < passwdfile |
 while IFS-: read file line
 do
   printf "%s|%s\n" "$line" "$file"
 done

Code Used:
Code:
xargs egrep  -f users.dat /dev/null < passwdfile |
 while IFS-: read file line
 do
   printf "%s|%s\n" "$line" "$file"
 done

I am getting the following error:
Quote:
$ ksh matchpull.ifs
matchpull.ifs[13]: IFS-:: not found
xargs: Child killed with signal 13
I modified grep -E with egrep.
I am on sun solaris.

Thanks,
# 6  
Old 04-20-2009
Quote:
Originally Posted by zenith
Code Used:
Code:
xargs egrep  -f users.dat /dev/null < passwdfile |
 while IFS-: read file line


Typo (mine); it should be:
Code:
 while IFS=: read file line

Quote:
Code:
 do
   printf "%s|%s\n" "$line" "$file"
 done

I am getting the following error:

I modified grep -E with egrep.
# 7  
Old 04-20-2009
Quote:
Originally Posted by cfajohnson
Typo (mine); it should be:
Code:
 while IFS=: read file line

Works but misses fields if fields are empty in /etc/passwd files.
$ xargs egrep -f users.dat /dev/null < passwdfile
/etc/server1_etc_passwd:+ABC:::::: ---> password file has empty fields
/etc/server2_etc_passwd:+XYZ:x::::: ---> password file has empty fields

Code:
$cat matchpull.ifs
xargs egrep  -f users.dat /dev/null < passwdfile | 
 while IFS=: read file line
 do
   printf "%s|%s\n" "$line" "$file"
 done

$ ksh matchpull.ifs
+ABC|/var/tmp/collection/secufiles/he2aixp4-1_etc_passwd -->Empty fields missing
+XYZ:x|/var/tmp/collection/secufiles/swcunx01_etc_passwd -->Empty fields missing
If field is not empty its working fine.
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question