Need distinct values from command in a script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need distinct values from command in a script
# 1  
Old 12-05-2013
Need distinct values from command in a script

Hello,

I am using below command
Code:
srvctl config service -d cmdbut

[dev-oragrid-ux01]cmdbut_01 (P):/devoragridcn_01/app/oracle> srvctl config service -d cmdbut
Service name: boms10.world
Service is enabled
Server pool: cmdbut_boms10.world
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: NONE
Edition:
Preferred instances: cmdbut_01
Available instances: cmdbut_02
Service name: boms_cmdbut_01.world
Service is enabled
Server pool: cmdbut_boms_cmdbut_01.world
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: NONE
Edition:
Preferred instances: cmdbut_01
Available instances: cmdbut_02

This is supposed to give values as shown in the output and I need distinct values for Preferred instances: and Available instances: which means that all distinct values of Preferred instances and all distinct values of Available instances .Here ,Preferred instances: distinct value is cmdbut_01 and Available instances is cmdbut_02

Please help me in writing a script on this.
Best regards,
Vishal

Last edited by Vishal_dba; 12-05-2013 at 03:48 PM..
# 2  
Old 12-05-2013
Pipe command output to this awk program:
Code:
srvctl config service -d cmdbut | awk -F: '
        /Preferred instances/ {
                P[$NF]
        }
        /Available instances/ {
                A[$NF]
        }
        END {
                printf ( "%s:", "Preferred instances" )
                for ( k in P )
                        printf ( "%s ", k )

                printf ( "\n%s:", "Available instances" )
                for ( k in A )
                        printf ( "%s ", k )

                printf "\n"
        }
'

This User Gave Thanks to Yoda For This Post:
# 3  
Old 12-05-2013
Thank you!


Could you please give a little explanatory note with this so that I can understand the logic in the code


Best regards,
Vishal
# 4  
Old 12-05-2013
Code:
awk -F: ' # Set colon (:) as field separator
          # Checking if pattern: Preferred instances exists in current record
          /Preferred instances/ {
                        # Add last field value ($NF) to index of associative array: P
                        P[$NF]
          }
          # Checking if pattern: Available instances exists in current record
          /Available instances/ {
                        # Add last field value ($NF) to index of associative array: A
                        A[$NF]
          }
          # END Rule
          END {
                        # Print Preferred instances
                        printf ( "%s:", "Preferred instances" )
                        # For each key in array: P
                        for ( k in P )
                                # Print key (k)
                                printf ( "%s ", k )

                        # Print Available instances
                        printf ( "\n%s:", "Available instances" )
                        # For each key in array: A
                        for ( k in A )
                                # Print key (k)
                                printf ( "%s ", k )

                        printf "\n"
        }
'

These 2 Users Gave Thanks to Yoda For This Post:
# 5  
Old 12-05-2013
For older versions we have the output like below:

Code:
 srvctl config service -d p3fi_dev
p3fi_p3fi_dev.world PREF: p3fi_dev_01 AVAIL: p3fi_dev_02
pplnet_p3fidev PREF: p3fi_dev_01 AVAIL: p3fi_dev_02
nexus_p3fidev PREF: p3fi_dev_01 AVAIL: p3fi_dev_02
applog_p3fidev PREF: p3fi_dev_01 AVAIL: p3fi_dev_02
p3fi_dev_01 PREF: p3fi_dev_01 AVAIL: p3fi_dev_02


Can we put an option there that if it doesn't find Preferred instance it should look for PREF: keyword and AVAIL keyword


Best regards,
Vishal
# 6  
Old 12-05-2013
Try this adjustment to Yoda's code to support both formats:

Code:
awk '
        /PREF:/ && /AVAIL:/ {
           for(i=1;i<NF;i++) {
              if($i == "PREF:") P[$(i+1)];
              if($i == "AVAIL:") A[$(i+1)];
           }
        }
        /Preferred instances/ {
                P[$NF]
        }
        /Available instances/ {
                A[$NF]
        }
        END {
                printf ( "%s:", "Preferred instances" )
                for ( k in P )
                        printf ( " %s", k )

                printf ( "\n%s:", "Available instances" )
                for ( k in A )
                        printf ( " %s", k )

                printf "\n"
        }
'

# 7  
Old 12-05-2013
Hi ,

Preferred instances is still coming as empty.How to display PREFERRED now by matching PREF pattern and also I want to put this whole string to a variable which would contain both preferred and available instances and later on want to segregate preferred and available from that variable and assign that to 2 variables one for preferred and other for available



Best regards,
Vishal
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find distinct values

Hi, I have two files of the following format file1 chr1:345-456 chr2:123-456 chr2:455-678 chr3:456-789 chr3:444-555 file2 chr1:345-456 chr2:123-456 chr3:456-789 output (2 Replies)
Discussion started by: jacobs.smith
2 Replies

2. Shell Programming and Scripting

Show distinct values of a key from a single line

Hi All, I am newbie to linux. Can somebody help me with following requirement. I have one huge line. I have to find out particular key/value pair to see the distinct value of that key. Portion of the String:- <?xml version="1.1" encoding="UTF-8"?> <Data><Val Ti="1342750845538" Du="0"... (5 Replies)
Discussion started by: kmajumder
5 Replies

3. Shell Programming and Scripting

average of distinct values with awk

Hi guys, I am not an expert in shell and I need help with awk command. I have a file with values like 200 1 1 200 7 2 200 6 3 200 5 4 300 3 1 300 7 2 300 6 3 300 4 4 I need resulting file with averages of... (3 Replies)
Discussion started by: saif
3 Replies

4. Shell Programming and Scripting

distinct values of all the fields

I am a beginner to scripting, please help me in this regard. How do I create a script that provides a count of distinct values of all the fields in the pipe delimited file ? I have 20 different files with multiple columns in each file. I needed to write a generic script where I give the number... (2 Replies)
Discussion started by: vukkusila
2 Replies

5. UNIX for Dummies Questions & Answers

distinct values of all the fields

I am a beginner to scripting, please help me in this regard. How do I create a script that provides a count of distinct values of all the fields in the pipe delimited file ? I have 20 different files with multiple columns in each file. I needed to write a generic script where I give the number... (1 Reply)
Discussion started by: vukkusila
1 Replies

6. Shell Programming and Scripting

Select distinct values from a flat file

Hi , I have a similar problem. Please can anyone help me with a shell script or a perl. I have a flat file like this fruit country apple germany apple india banana pakistan banana saudi mango india I want to get a output like fruit country apple ... (7 Replies)
Discussion started by: smalya
7 Replies

7. Shell Programming and Scripting

grep distinct values

this is a little more complex than that. I have a text file and I need to find all the distinct words that appear in a line after the word TABLESPACE when I grep for just the word tablespace, I get: how do i parse this a little better so i have a smaller file to read? This is just an... (4 Replies)
Discussion started by: guessingo
4 Replies

8. Shell Programming and Scripting

Getting Distinct values from second field in a file....

Hi I have a pipe delimited file. I am trying to grab the DISTINCT value from the second field. The file is something like: 1233|apple|ron 1234|apple|elephant 1235|egg|man the output I am trying to get from second field is apple,egg (apple coming only once) Thanks simi (4 Replies)
Discussion started by: simi28
4 Replies

9. Shell Programming and Scripting

Awk to print distinct col values

Hi Guys... I am newbie to awk and would like a solution to probably one of the simple practical questions. I have a test file that goes as: 1,2,3,4,5,6 7,2,3,8,7,6 9,3,5,6,7,3 8,3,1,1,1,1 4,4,2,2,2,2 I would like to know how AWK can get me the distinct values say for eg: on col2... (22 Replies)
Discussion started by: anduzzi
22 Replies

10. Shell Programming and Scripting

Loop through only the distinct values in a file

Datafile has the following data seperated by : FIELD1:FIELD2:FIELD3 D1:/opt/9.1.9:Y D2:/opt/10.1.10:Y D3:/opt/9.1.9:Y D4:/opt/8.1.8:Y D5:/opt/8.1.8:Y D6:/opt/9.1.9:Y D7:/opt/9.1.9:Y D8:/opt/10.1.10:Y D9:/opt/9.1.9:Y D10:/opt/10.1.10:Y I want to do some operations only on the distinct... (2 Replies)
Discussion started by: pbekal
2 Replies
Login or Register to Ask a Question