Sort a list of object identifiers: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 53:
# 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
# 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
=={{header|Perl}}==
<lang perl>
#!/usr/bin/perl
###--------------------------
### Sort: -OID - Numeric
### Bert Mariani 2016-07-07
###--------------------------
@arrayOID = () ;
@arrayOIDSorted = () ;
@arrayOID =
(
".1.3.6.1.4.1.11.2.17.19.3.4.0.10",
".1.3.6.1.4.1.11150.3.4.0.2",
".1.3.6.1.4.1.11.2.17.19.3.4.0.19",
".1.3.6.1.4.1.11150.3.4.0.1",
".1.3.6.1.4.1.11.2.17.19.3.4.0.22",
".1.3.6.1.4.1.11.2.17.19.3.4.0.2",
".1.3.6.1.4.1.11150.3.4.0.11",
".1.3.6.1.4.1.11.2.17.19.3.4.0.1",
".1.3.6.1.4.1.11.2.17.3773.0.2",
".1.3.6.1.4.1.11.2.17.19.2.0.79",
".1.3.6.1.4.1.11150.3.4.0.21",
".1.3.6.1.4.1.11.2.17.19.2.0.9",
".1.3.6.1.4.1.11.2.17.19.3.4.0.25",
".1.3.6.1.4.1.11.2.17.19.3.4.0.32",
".1.3.6.1.4.1.11.2.17.19.3.4.0.4",
".1.3.6.1.4.1.11.2.17.19.3.4.0.31",
".1.3.6.1.4.1.11.2.17.19.3.4.0.3",
".1.3.6.1.4.1.11.2.17.3773.0.1"
);
### One big long line ... made readable
@arrayOIDSorted =
map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { [ $_,
join '', map { sprintf("%8d",$_) }
split( /\./, $_)
]
}
@arrayOID;
print "\nAfter OID Sort \n\n";
$ptrN = 0;
$entry = 1;
while ( $arrayOIDSorted[$ptrN] )
{
print "$entry | $arrayOIDSorted[$ptrN] |\n" ;
$entry++;
$ptrN++;
}
print "\nEnd OID Sort \n\n";
###=========================================
#
# After OID Sort
#
# 1 | .1.3.6.1.4.1.11.2.17.19.2.0.9 |
# 2 | .1.3.6.1.4.1.11.2.17.19.2.0.79 |
# 3 | .1.3.6.1.4.1.11.2.17.19.3.4.0.1 |
# 4 | .1.3.6.1.4.1.11.2.17.19.3.4.0.2 |
# 5 | .1.3.6.1.4.1.11.2.17.19.3.4.0.3 |
# 6 | .1.3.6.1.4.1.11.2.17.19.3.4.0.4 |
# 7 | .1.3.6.1.4.1.11.2.17.19.3.4.0.10 |
# 8 | .1.3.6.1.4.1.11.2.17.19.3.4.0.19 |
# 9 | .1.3.6.1.4.1.11.2.17.19.3.4.0.22 |
# 10 | .1.3.6.1.4.1.11.2.17.19.3.4.0.25 |
# 11 | .1.3.6.1.4.1.11.2.17.19.3.4.0.31 |
# 12 | .1.3.6.1.4.1.11.2.17.19.3.4.0.32 |
# 13 | .1.3.6.1.4.1.11.2.17.3773.0.1 |
# 14 | .1.3.6.1.4.1.11.2.17.3773.0.2 |
# 15 | .1.3.6.1.4.1.11150.3.4.0.1 |
# 16 | .1.3.6.1.4.1.11150.3.4.0.2 |
# 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
# 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
#
# End OID Sort
#===========================================
/<lang perl>
|
Revision as of 20:29, 7 July 2016
Sort by OID numbers.
OID - Object Identifiers are used in Network data These numbers can vary in length, and have a dot "." between them. The individual number can be of different number of digits also.
Example:
==========================
INPUT
@arrayOID = (
".1.3.6.1.4.1.11.2.17.19.3.4.0.10", ".1.3.6.1.4.1.11150.3.4.0.2", ".1.3.6.1.4.1.11.2.17.19.3.4.0.19", ".1.3.6.1.4.1.11150.3.4.0.1", ".1.3.6.1.4.1.11.2.17.19.3.4.0.22", ".1.3.6.1.4.1.11.2.17.19.3.4.0.2", ".1.3.6.1.4.1.11150.3.4.0.11", ".1.3.6.1.4.1.11.2.17.19.3.4.0.1", ".1.3.6.1.4.1.11.2.17.3773.0.2", ".1.3.6.1.4.1.11.2.17.19.2.0.79", ".1.3.6.1.4.1.11150.3.4.0.21", ".1.3.6.1.4.1.11.2.17.19.2.0.9", ".1.3.6.1.4.1.11.2.17.19.3.4.0.25", ".1.3.6.1.4.1.11.2.17.19.3.4.0.32", ".1.3.6.1.4.1.11.2.17.19.3.4.0.4", ".1.3.6.1.4.1.11.2.17.19.3.4.0.31", ".1.3.6.1.4.1.11.2.17.19.3.4.0.3", ".1.3.6.1.4.1.11.2.17.3773.0.1"
);
============================
OUTPUT - Correctly Sorted
- 01 | .1.3.6.1.4.1.11.2.17.19.2.0.9 |
- 02 | .1.3.6.1.4.1.11.2.17.19.2.0.79 |
- 03 | .1.3.6.1.4.1.11.2.17.19.3.4.0.1 |
- 04 | .1.3.6.1.4.1.11.2.17.19.3.4.0.2 |
- 05 | .1.3.6.1.4.1.11.2.17.19.3.4.0.3 |
- 06 | .1.3.6.1.4.1.11.2.17.19.3.4.0.4 |
- 07 | .1.3.6.1.4.1.11.2.17.19.3.4.0.10 |
- 08 | .1.3.6.1.4.1.11.2.17.19.3.4.0.19 |
- 09 | .1.3.6.1.4.1.11.2.17.19.3.4.0.22 |
- 10 | .1.3.6.1.4.1.11.2.17.19.3.4.0.25 |
- 11 | .1.3.6.1.4.1.11.2.17.19.3.4.0.31 |
- 12 | .1.3.6.1.4.1.11.2.17.19.3.4.0.32 |
- 13 | .1.3.6.1.4.1.11.2.17.3773.0.1 |
- 14 | .1.3.6.1.4.1.11.2.17.3773.0.2 |
- 15 | .1.3.6.1.4.1.11150.3.4.0.1 |
- 16 | .1.3.6.1.4.1.11150.3.4.0.2 |
- 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
- 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
Perl
<lang perl>
- !/usr/bin/perl
- --------------------------
- Sort: -OID - Numeric
- Bert Mariani 2016-07-07
- --------------------------
@arrayOID = () ; @arrayOIDSorted = () ;
@arrayOID = (
".1.3.6.1.4.1.11.2.17.19.3.4.0.10", ".1.3.6.1.4.1.11150.3.4.0.2", ".1.3.6.1.4.1.11.2.17.19.3.4.0.19", ".1.3.6.1.4.1.11150.3.4.0.1", ".1.3.6.1.4.1.11.2.17.19.3.4.0.22", ".1.3.6.1.4.1.11.2.17.19.3.4.0.2", ".1.3.6.1.4.1.11150.3.4.0.11", ".1.3.6.1.4.1.11.2.17.19.3.4.0.1", ".1.3.6.1.4.1.11.2.17.3773.0.2", ".1.3.6.1.4.1.11.2.17.19.2.0.79", ".1.3.6.1.4.1.11150.3.4.0.21", ".1.3.6.1.4.1.11.2.17.19.2.0.9", ".1.3.6.1.4.1.11.2.17.19.3.4.0.25", ".1.3.6.1.4.1.11.2.17.19.3.4.0.32", ".1.3.6.1.4.1.11.2.17.19.3.4.0.4", ".1.3.6.1.4.1.11.2.17.19.3.4.0.31", ".1.3.6.1.4.1.11.2.17.19.3.4.0.3", ".1.3.6.1.4.1.11.2.17.3773.0.1"
);
### One big long line ... made readable @arrayOIDSorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, join , map { sprintf("%8d",$_) } split( /\./, $_) ] } @arrayOID;
print "\nAfter OID Sort \n\n"; $ptrN = 0; $entry = 1;
while ( $arrayOIDSorted[$ptrN] ) { print "$entry | $arrayOIDSorted[$ptrN] |\n" ; $entry++; $ptrN++; }
print "\nEnd OID Sort \n\n";
- =========================================
- After OID Sort
- 1 | .1.3.6.1.4.1.11.2.17.19.2.0.9 |
- 2 | .1.3.6.1.4.1.11.2.17.19.2.0.79 |
- 3 | .1.3.6.1.4.1.11.2.17.19.3.4.0.1 |
- 4 | .1.3.6.1.4.1.11.2.17.19.3.4.0.2 |
- 5 | .1.3.6.1.4.1.11.2.17.19.3.4.0.3 |
- 6 | .1.3.6.1.4.1.11.2.17.19.3.4.0.4 |
- 7 | .1.3.6.1.4.1.11.2.17.19.3.4.0.10 |
- 8 | .1.3.6.1.4.1.11.2.17.19.3.4.0.19 |
- 9 | .1.3.6.1.4.1.11.2.17.19.3.4.0.22 |
- 10 | .1.3.6.1.4.1.11.2.17.19.3.4.0.25 |
- 11 | .1.3.6.1.4.1.11.2.17.19.3.4.0.31 |
- 12 | .1.3.6.1.4.1.11.2.17.19.3.4.0.32 |
- 13 | .1.3.6.1.4.1.11.2.17.3773.0.1 |
- 14 | .1.3.6.1.4.1.11.2.17.3773.0.2 |
- 15 | .1.3.6.1.4.1.11150.3.4.0.1 |
- 16 | .1.3.6.1.4.1.11150.3.4.0.2 |
- 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
- 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
- End OID Sort
- ===========================================
/<lang perl>