Help in script


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help in script
# 1  
Old 08-10-2011
Help in script

Hi,

I have the below script:
Code:
 
/opt/app/dstage/DataStage752/Ascential/DataStage/DSEngine/bin/dsjob lprojects >> prj
j=`cat prj|wc -l|sed -e 's/^[ \t]*//'` 
for i in {1..$j}
do
pr=head -$i prj
k=`cat status.txt| grep $pr |wc -l|sed -e 's/^[ \t]*//'` 
echo "there are $k  in $pr" >> body.txt
done

The first line in the script will create a file called 'prj' which contains the belo data:
Code:
abc
bcd
cde

So, the j value becomes 3.
so the for loop will execute from 1 to 3.

The file status.txt contains the below data:
Code:
1-abc
11-abc
12-abc
1-bcd
0-bcd
1-cde
12-cde
123-cde

So,in the first iteration $pr becomes abc.
While grepping for abc in status.txt there are 3. so $k becomes 3.
So body.txt will get the content as "there are 3 in abc".

In the next iteration, $k becomes 2 (since there are 2 bcd in status.txt).
So the line "there are 2 in bcd" will be appended to body.txt.

But it's not working as expected.

Can any one tell me where i am making mistakes in the script?

Thanks

---------- Post updated at 12:38 PM ---------- Previous update was at 11:25 AM ----------

Silly mistake:

head -1 will work correctly

but while going with head -2 , it causes the failure in grep

---------- Post updated at 12:42 PM ---------- Previous update was at 12:38 PM ----------

In stead of head , i would like to go with sed -n option.

BUt i am getting syntax error for the below code:

Code:
 
pr=`sed -n '$i{p}' prj|sed -e 's/^[ \t]*//'`

can any one help me?

Thanks

Last edited by pandeesh; 08-10-2011 at 03:52 AM..
# 2  
Old 08-10-2011
embedding a shell variable in sed:

Code:
sed -n ''"$i"'p' datafile
 
or
 
sed -n "${i}p" datafile

# 3  
Old 08-10-2011
Quote:
Originally Posted by pandeesh
Code:
j=`cat prj|wc -l|sed -e 's/^[ \t]*//'`

You can replace that pipeline with a simple wc -l < prj. When wc reads from standard input instead of a named file command line argument, it does not output any name.

Should you care for it, here's a simpler, more efficient approach:
Code:
awk -F- '
    NR==FNR {k[$0]=0; next}
    $2 in k {k[$2]++}
    END {for (i in k) print "There are " k[i] " in " i}
' prj status.txt > body.txt

Regards,
Alister
 
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