Sponsored Content
Full Discussion: Script help
Top Forums Shell Programming and Scripting Script help Post 69963 by jerardfjay on Saturday 23rd of April 2005 06:35:06 AM
Old 04-23-2005
one way of doing it (revised on 05/10/2005)

For those of you who took the time to read my post, thank you and here is one way of doing it. Although I would have preferred to use awk for this task (due to my limited awk exposure) I had to use regular shell scripting to achieve my goal (thnx to JustIce for showing me how to convert this to a delimited file). Here goes.

#! /usr/bin/ksh

#Typecast the count variables as integers
typeset -i prev_asnerror
typeset -i prev_asntotal
typeset -i curr_asnerror
typeset -i curr_asntotal
typeset -i print_asnerror
typeset -i print_asntotal

#Initialize all temporary files required for merge process
> ./asn2spr.d 2>/dev/null
> ./asn2spr.sort 2>/dev/null
> ./asn2spr 2>/dev/null
> ./230240.txt

# Assuming the data files are all present in the 240 folder
cat 230.txt 240.txt >> asn2spr #Combine 230 and 240 files together
sort asn2spr > asn2spr.sort #Sort the combined file to get input data sorted by Supplier and location

for line in `< asn2spr.sort`
do
col1=`echo $line | cut -c1-6`
col2=`echo $line | cut -c7`
col3=`echo $line | cut -c8-15`
col4=`echo $line | cut -c16-22`
col5=`echo $line | cut -c23-29`
echo "$col1|$col2|$col3|$col4|$col5" >> asn2spr.d #Create the Delimited temporary file of the input data
done

first=1
supplier_match=0
while read line
do
if [ "$first" -eq "1" ] ;
then first=0
prev_header=`echo $line|awk -F "|" '{print $1$2}'`
prev_supplier=`echo $line|awk -F "|" '{print $3}'`
prev_asnerror=`echo $line|awk -F "|" '{print $4}'`
prev_asntotal=`echo $line|awk -F "|" '{print $5}'`
# Set the print columns for the first read
print_asnerror=`echo $line|awk -F "|" '{print $4}'`
print_asntotal=`echo $line|awk -F "|" '{print $5}'`
continue

fi
curr_supplier=`echo $line|awk -F "|" '{print $3}'`
curr_asnerror=`echo $line|awk -F "|" '{print $4}'`
curr_asntotal=`echo $line|awk -F "|" '{print $5}'`
if [ "$prev_supplier" -eq "$curr_supplier" ] ;
then
supplier_match=1
print_asnerror=`expr $prev_asnerror \+ $curr_asnerror`
print_asntotal=`expr $prev_asntotal \+ $curr_asntotal`
else
# Set the print values for the previous record
if [ "$supplier_match" -eq "0" ] ;
then
print_asnerror=$prev_asnerror
print_asntotal=$prev_asntotal
fi

printf "%7s %8s %07d %07d\n" $prev_header $prev_supplier $print_asnerror $print_asntotal | sed 's/ //g' >> 230240.txt
prev_supplier=`echo $line|awk -F "|" '{print $3}'`
prev_asnerror=`echo $line|awk -F "|" '{print $4}'`
prev_asntotal=`echo $line|awk -F "|" '{print $5}'`
let print_asnerror=0
let print_asntotal=0
supplier_match=0
fi
done < asn2spr.d
# Set the print values for the previous record for last record
if [ "$supplier_match" -eq "0" ] ;
then
print_asnerror=$prev_asnerror
print_asntotal=$prev_asntotal
fi

printf "%7s %8s %07d %07d\n" $prev_header $prev_supplier $print_asnerror $print_asntotal | sed 's/ //g' >> 230240.txt
rm -f ./asn2spr.d 2>/dev/null
rm -f ./asn2spr.sort 2>/dev/null
rm -f ./asn2spr 2>/dev/null

Thanks
Jerardfjay

Last edited by jerardfjay; 05-10-2005 at 10:40 AM.. Reason: Buggy Code (last revision)
 

5 More Discussions You Might Find Interesting

1. 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

2. 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

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

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

5. 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
All times are GMT -4. The time now is 03:40 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy