diff --git a/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java b/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
index 720a3ad..f0a5eec 100644
--- a/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
@@ -26,17 +26,22 @@
 import org.onosproject.cli.AbstractChoicesCompleter;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DeviceService;
 
 /**
- * PortNumber completer.
+ * PortNumber completer, which returns candidates in {@link PortNumber#toString()} form.
  *
  * Assumes argument right before the one being completed is DeviceId.
  */
 public class PortNumberCompleter extends AbstractChoicesCompleter {
 
-    @Override
-    protected List<String> choices() {
+    /**
+     * Look for valid DeviceId in arguments passed so far.
+     *
+     * @return DeviceId found or null if not found
+     */
+    protected DeviceId lookForDeviceId() {
         ArgumentList args = getArgumentList();
         //parse argument list for deviceId
         DeviceService deviceService = getService(DeviceService.class);
@@ -45,15 +50,22 @@
             if (str.contains(":")) {
                 dev = deviceService.getDevice(DeviceId.deviceId(str));
                 if (dev != null) {
-                    break;
+                    return dev.id();
                 }
             }
         }
-        if (dev == null) {
-            return Collections.singletonList("Missing device");
-        }
-        DeviceId deviceId = dev.id();
+        return null;
+    }
 
+    @Override
+    protected List<String> choices() {
+        DeviceId deviceId = lookForDeviceId();
+
+        if (deviceId == null) {
+            return Collections.emptyList();
+        }
+
+        DeviceService deviceService = getService(DeviceService.class);
         return StreamSupport.stream(deviceService.getPorts(deviceId).spliterator(), false)
             .map(port -> port.number().toString())
             .collect(Collectors.toList());
diff --git a/cli/src/main/java/org/onosproject/cli/net/completer/NumericPortNumberCompleter.java b/cli/src/main/java/org/onosproject/cli/net/completer/NumericPortNumberCompleter.java
new file mode 100644
index 0000000..e0b63cc
--- /dev/null
+++ b/cli/src/main/java/org/onosproject/cli/net/completer/NumericPortNumberCompleter.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.cli.net.completer;
+
+import static org.onlab.osgi.DefaultServiceDirectory.getService;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
+import org.onosproject.cli.net.PortNumberCompleter;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceService;
+
+/**
+ * PortNumber completer, which returns candidates in decimal form.
+ *
+ * Assumes argument right before the one being completed is DeviceId.
+ */
+public class NumericPortNumberCompleter extends PortNumberCompleter {
+
+    @Override
+    protected List<String> choices() {
+        DeviceId deviceId = lookForDeviceId();
+
+        if (deviceId == null) {
+            return Collections.emptyList();
+        }
+
+        DeviceService deviceService = getService(DeviceService.class);
+        return StreamSupport.stream(deviceService.getPorts(deviceId).spliterator(), false)
+            .map(port -> Long.toString(port.number().toLong()))
+            .collect(Collectors.toList());
+    }
+}
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 0633c44..299fe09 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -953,6 +953,7 @@
     <bean id="nodeIdCompleter" class="org.onosproject.cli.NodeIdCompleter"/>
     <bean id="deviceIdCompleter" class="org.onosproject.cli.net.DeviceIdCompleter"/>
     <bean id="portNumberCompleter" class="org.onosproject.cli.net.PortNumberCompleter"/>
+    <bean id="numericPortNumberCompleter" class="org.onosproject.cli.net.completer.NumericPortNumberCompleter" />
     <bean id="portStateCompleter" class="org.onosproject.cli.net.PortStateCompleter"/>
     <bean id="clusterIdCompleter" class="org.onosproject.cli.net.ClusterIdCompleter"/>
     <bean id="roleCompleter" class="org.onosproject.cli.net.RoleCompleter"/>
