grib/src/main/java/ucar/nc2/grib/grib1/tables/NcepRfcTables.java
@Nullable
  private static Map<Integer, String> readNwsoSubCenter(String path) {
    Map<Integer, String> result = new HashMap<>();

    try (InputStream is = GribResourceReader.getInputStream(path);
      BufferedReader br = new BufferedReader(new InputStreamReader(is, CDM.utf8Charset))) {
      while (true) {
        String line = br.readLine();
        if (line == null) {
          break;
        }
        if ((line.length() == 0) || line.startsWith("#")) {
          continue;
        }

        StringBuilder lineb = new StringBuilder(line);
        StringUtil2.remove(lineb, "'+,/");
        String[] flds = lineb.toString().split("[:]");

        int val = Integer.parseInt(flds[0].trim()); // must have a number
        String name = flds[1].trim() + ": " + flds[2].trim();

        result.put(val, name);
      }
      return Collections.unmodifiableMap(result);  // all at once - thread safe

    } catch (IOException ioError) {
      logger.warn("An error occurred in Grib1Tables while trying to open the table " + path + " : " + ioError);
      return null;
    }
  }
@Nullable
  private static Map<Integer, String> readNwsoSubCenter(String path) {
    Map<Integer, String> result = new HashMap<>();

    try (InputStream is = GribResourceReader.getInputStream(path);
      BufferedReader br = new BufferedReader(new InputStreamReader(is, CDM.utf8Charset))) {
      while (true) {
        String line = br.readLine();
        if (line == null) {
          break;
        }
        if ((line.length() == 0) || line.startsWith("#")) {
          continue;
        }

        StringBuilder lineb = new StringBuilder(line);
        StringUtil2.remove(lineb, "'+,/");
        String[] flds = lineb.toString().split("[:]");

        int val = Integer.parseInt(flds[0].trim()); // must have a number
        String name = flds[1].trim() + ": " + flds[2].trim();

        result.put(val, name);
      }
      return Collections.unmodifiableMap(result);  // all at once - thread safe

    } catch (IOException ioError) {
      logger.warn("An error occurred in Grib1Tables while trying to open the table " + path + " : " + ioError);
      return null;
    }
  }
@ Nullable private static Map < Integer , String > readNwsoSubCenter ( String path ) { Map < Integer , String > result = new HashMap <> ( ) ; try ( InputStream is = GribResourceReader . getInputStream ( path ) ; BufferedReader br = new BufferedReader ( new InputStreamReader ( is , CDM . utf8Charset ) ) ) { while ( true ) { String line = br . readLine ( ) ; if ( line == null ) { break ; } if ( ( line . length ( ) == 0 ) || line . startsWith ( "#" ) ) { continue ; } StringBuilder lineb = new StringBuilder ( line ) ; StringUtil2 . remove ( lineb , "'+,/" ) ; String [ ] flds = lineb . toString ( ) . split ( "[:]" ) ; int val = Integer . parseInt ( flds [ 0 ] . trim ( ) ) ; // must have a number
 String name = flds [ 1 ] . trim ( ) + ": " + flds [ 2 ] . trim ( ) ; result . put ( val , name ) ; } return Collections . unmodifiableMap ( result ) ; // all at once - thread safe
 } catch ( IOException ioError ) { logger . warn ( "An error occurred in Grib1Tables while trying to open the table " + path + " : " + ioError ) ; return null ; } }
order: num, name, desc, unit
order : num name desc unit