If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

 
Go Back  dBforums > Data Access, Manipulation & Batch Languages > Unix Shell Scripts > How to group the output w/ limit

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-23-09, 07:02
alvingo alvingo is offline
Registered User
 
Join Date: Jul 2009
Posts: 8
Question How to group the output w/ limit

Hi All,

Second time to post on this group

I'm pulling my hair now 'coz I'm so dumb to produce this requirement.

Requirement: I want to run a utility by limiting the no. inside my process (mov##) to be able to use in multi streaming.

Here is my script:
--Input: "user_list.txt"
40013163:5
40109925:3
89877423:4
73084042:1
40152547:2
82475674:0

--Script:
Code:
set -A ext_ids `cat user_list.txt`

process_id=2
total_extid=${#ext_ids[@]}
cnt=0
while [ $cnt -lt $total_extid ]
  do
    if [ $total_extid -lt 6 ]
    then
     echo "PREQ_MOVER mov0$process_id ${ext_ids[$cnt]} "
    else
     # Always starts w/ process_id 2
     process_id=`expr 2 + $cnt / 3` # Increase the dividend to increase the process_id value
      if [ $process_id -le 9 ]
       then
          processid="0$process_id"
      else
          processid=$process_id
      fi
       extids=`echo "${ext_ids[$cnt]}"|cut -d : -f 1`
    echo "PREQ_MOVER mov$processid $extids "
       count=`echo "${ext_ids[$cnt]}"|cut -d : -f 2`
   ## Un/Comment here
        #if [ $count -eq 0 ]
        # then
        #   count=$(($count + 1))
        #fi
    fi
   ## Un/Comment here 
  #cnt=$(($cnt + $count))
  cnt=$(($cnt + 1))
done
# Single stream or multi stream
if [ $total_extid -lt 6 ]
  then
   echo "\n\tRunning Single Stream of MOVER\n"
   echo "MOVER mov0$process_id SOURCE_DB"
  else
   echo "\n\tRunning Multiple Stream of MOVER\n"
   proc=2
    while [ $proc -le $process_id ]
     do
      if [ $proc -le 9 ]
       then
          procs="0$proc"
      else
          procs=$proc
      fi
      echo "MOVER mov${procs} "
      proc=$(($proc + 1))
    done
fi
Output:
PREQ_MOVER mov02 40013163
PREQ_MOVER mov02 40109925
PREQ_MOVER mov02 89877423
PREQ_MOVER mov03 73084042
PREQ_MOVER mov03 40152547
PREQ_MOVER mov03 82475674

Running Multiple Stream of MOVER

MOVER mov02
MOVER mov03

Now by editing the script by uncommenting the commented fields. I get...
Output:
PREQ_MOVER mov02 40013163
PREQ_MOVER mov03 82475674

Running Multiple Stream of MOVER

MOVER mov02
MOVER mov03
Note: The output above skips from 40013163 to 40013163 & the rest are not shown.

Desired Output: (limit to 3 accounts inside each mov## process)
PREQ_MOVER mov02 40013163 -> since it has 5, it will take up the whole process "mov02". This will fill up the process even if it exceeds the limit
PREQ_MOVER mov03 40109925 -> will take mov03 as it has 3
PREQ_MOVER mov04 89877423 -> will take mov04 as it has 4. This will fill up the process even if it exceeds the limit.
PREQ_MOVER mov05 73084042 -> has 1, will use mov05 since the limit is not met
PREQ_MOVER mov05 40152547 -> has 2, will still use mov05 to fill up the limit
PREQ_MOVER mov06 82475674 -> this will use mov06 as mov05 is already filled up.

Running Multiple Stream of MOVER

MOVER mov02
MOVER mov03
MOVER mov04
MOVER mov05
MOVER mov06

Question: How to be able to display the desired output in order to limit the nos of each mov## process (even it exceeds) in sequence (no skipping).

Purpose: To run the utility MOVER in multiple stream by not skipping a user in the list.

I hope the explanation above is sufficient & I hope someone will enlighten me on this.

Hoping for your kind assistant.

Thanx
Reply With Quote
  #2 (permalink)  
Old 07-23-09, 07:38
mike_bike_kite mike_bike_kite is offline
vaguely human
 
Join Date: Jun 2007
Location: London
Posts: 2,517
and in plain English?
Reply With Quote
  #3 (permalink)  
Old 07-24-09, 06:22
alvingo alvingo is offline
Registered User
 
Join Date: Jul 2009
Posts: 8
I want someone to help me improve my script so that my output will be the desired output I wanted.
Reply With Quote
  #4 (permalink)  
Old 07-24-09, 07:27
mike_bike_kite mike_bike_kite is offline
vaguely human
 
Join Date: Jun 2007
Location: London
Posts: 2,517
Quote:
Originally Posted by alvingo
I want someone to help me improve my script so that my output will be the desired output I wanted.
To be fair I think that's what everybody wants.

I was more interested in what you wanted your script to actually do. Could you also give some background as to why it needs to be done at all.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On