# generate ordinal number from interface name, used to sort interfaces def ordinal ary = ifc_name.scan(/\d+/) if ary.size == 1 name, number = ifc_name.split(/(\d+)/) name.to_i(36) + number.to_i else ary.fill("0", ary.size..10).reverse.map.with_index { |integer, index| (integer.to_i+1) * 65536 ** index }.inject(:+) end end def <=> other ordinal <=> other.ordinal end [ytti@eng0.dllstx09.us.to.gin.ntt.net ~/git/cfggen]% ./test r14.labxtx01.us.bb|grep interface interface bundle-ether1 interface bundle-ether2 interface bundle-ether4 interface loopback0 interface mgmteth0/rp0/cpu0/0 interface mgmteth0/rp1/cpu0/0 interface tengige0/1/0/0 interface tengige0/1/0/1 interface tengige0/1/0/8 interface tengige0/1/0/11 interface tengige0/1/0/12 interface tengige0/1/0/13 interface tengige0/1/0/14 interface hundredgige0/2/0/0 interface hundredgige0/2/0/1 interface tengige0/2/0/2/0 interface tengige0/2/0/2/1 interface tengige0/2/0/2/1.320 interface tengige0/2/0/2/1.321 interface tengige0/2/0/2/1.322 interface tengige0/2/0/2/1.323 interface tengige0/2/0/2/1.324 interface tengige0/2/0/2/1.325 interface tengige0/2/0/2/1.326 interface tengige0/2/0/2/1.327 interface tengige0/2/0/2/1.328 interface tengige0/2/0/2/1.329 interface tengige0/2/0/2/1.610 interface tengige0/2/0/2/1.611 interface tengige0/2/0/2/1.612 interface tengige0/2/0/2/1.613 interface tengige0/2/0/2/1.614 interface tengige0/2/0/2/1.615 interface tengige0/2/0/2/1.616 interface tengige0/2/0/2/1.617 interface tengige0/2/0/2/1.618 interface tengige0/2/0/2/1.619 interface tengige0/2/0/2/2 interface tengige0/2/0/2/2.1000 interface tengige0/2/0/2/2.1001 interface tengige0/2/0/2/2.1002 interface tengige0/2/0/2/2.1003 interface tengige0/2/0/2/2.1004 interface tengige0/2/0/2/2.1005 interface tengige0/2/0/2/2.1006 interface tengige0/2/0/2/2.1007 interface tengige0/2/0/2/2.1008 interface tengige0/2/0/2/2.1009 interface tengige0/2/0/2/2.1010 interface tengige0/2/0/2/2.1011 interface tengige0/2/0/2/2.1012 interface tengige0/2/0/2/2.1013 interface tengige0/2/0/2/2.1014 interface tengige0/2/0/2/2.1015 interface tengige0/2/0/2/2.1016 interface tengige0/2/0/2/2.1017 interface tengige0/2/0/2/2.1018 interface tengige0/2/0/2/2.1019 interface tengige0/2/0/2/2.1020 interface tengige0/2/0/2/2.1021 interface tengige0/2/0/2/2.1022 interface tengige0/2/0/2/2.1023 interface tengige0/2/0/2/2.1024 interface tengige0/2/0/2/2.1025 interface tengige0/2/0/2/2.1026 interface tengige0/2/0/2/2.1027 interface tengige0/2/0/2/2.1028 interface tengige0/2/0/2/2.1029 interface tengige0/2/0/2/2.1030 interface tengige0/2/0/2/2.1031 interface tengige0/2/0/2/2.1032 interface tengige0/2/0/2/2.1033 interface tengige0/2/0/2/2.1034 interface tengige0/2/0/2/2.1035 interface tengige0/2/0/2/2.1036 interface tengige0/2/0/2/2.1037 interface tengige0/2/0/2/2.1038 interface tengige0/2/0/2/2.1039 interface tengige0/2/0/2/2.1040 interface tengige0/2/0/2/2.1041 interface tengige0/2/0/2/2.1042 interface tengige0/2/0/2/2.1043 interface tengige0/2/0/2/2.1044 interface tengige0/2/0/2/2.1045 interface tengige0/2/0/2/2.1046 interface tengige0/2/0/2/2.1047 interface tengige0/2/0/2/2.1048 interface tengige0/2/0/2/2.1049 interface tengige0/2/0/2/2.1050 interface tengige0/2/0/2/2.1051 interface tengige0/2/0/2/2.1052 interface tengige0/2/0/2/2.1053 interface tengige0/2/0/2/2.1054 interface tengige0/2/0/2/2.1055 interface tengige0/2/0/2/2.1056 interface tengige0/2/0/2/2.1057 interface tengige0/2/0/2/2.1058 interface tengige0/2/0/2/2.1059 interface tengige0/2/0/2/2.1060 interface tengige0/2/0/2/2.1061 interface tengige0/2/0/2/2.1062 interface tengige0/2/0/2/2.1063 interface tengige0/2/0/2/2.1064 interface tengige0/2/0/2/2.1065 interface tengige0/2/0/2/2.1066 interface tengige0/2/0/2/2.1067 interface tengige0/2/0/2/2.1068 interface tengige0/2/0/2/2.1069 interface tengige0/2/0/2/2.1070 interface tengige0/2/0/2/2.1071 interface tengige0/2/0/2/2.1072 interface tengige0/2/0/2/2.1073 interface tengige0/2/0/2/2.1074 interface tengige0/2/0/2/2.1075 interface tengige0/2/0/2/2.1076 interface tengige0/2/0/2/2.1077 interface tengige0/2/0/2/2.1078 interface tengige0/2/0/3/0 interface tengige0/2/0/3/1 interface tengige0/2/0/3/2 interface hundredgige0/3/0/1 interface hundredgige0/3/0/2 interface hundredgige0/3/0/2.300 interface hundredgige0/3/0/2.301 interface hundredgige0/3/0/2.302 interface hundredgige0/3/0/2.303 interface hundredgige0/3/0/2.304 interface hundredgige0/3/0/2.305 interface hundredgige0/3/0/2.306 interface hundredgige0/3/0/2.307 interface hundredgige0/3/0/2.308 interface hundredgige0/3/0/2.309 interface hundredgige0/3/0/2.600 interface hundredgige0/3/0/2.601 interface hundredgige0/3/0/2.602 interface hundredgige0/3/0/2.603 interface hundredgige0/3/0/2.604 interface hundredgige0/3/0/2.605 interface hundredgige0/3/0/2.606 interface hundredgige0/3/0/2.607 interface hundredgige0/3/0/2.608 interface hundredgige0/3/0/2.609 interface hundredgige0/3/0/3 [ytti@eng0.dllstx09.us.to.gin.ntt.net ~/git/cfggen]% ./test r24.labxtx01.us.bb|grep -A270 interfaces|egrep '^ [a-z]' ae1 { ae3 { ae5 { ae99 { lo0 { et-0/0/0 { et-0/0/1 { xe-1/0/0 { xe-1/0/1 { xe-1/0/1.512 { xe-1/0/2 { xe-1/0/3 { xe-1/0/5 { xe-1/0/6 { xe-1/0/7 { xe-1/0/8 { xe-1/0/9 { xe-1/0/10 { xe-1/0/11 { xe-1/0/12 { xe-1/0/13 { xe-1/0/14 { xe-1/0/15 { xe-1/0/16 { xe-1/0/17 { xe-1/0/18 { xe-1/0/19 { xe-1/0/20 { xe-1/0/21 { xe-1/0/22 { xe-1/0/23 {