如何解析 ksh 中的端口号字符串

如何解析 ksh 中的端口号字符串

我想从命令的输出中解析我需要的端口号docker port。该docker port <container-name>命令返回输出如下:

15672/tcp -> 0.0.0.0:49187 5672/tcp -> 0.0.0.0:49188
5678/tcp -> 0.0.0.0:49189

所以它要么是单个端口号,要么是 2 个端口号。

值得庆幸的是,如果该命令输出 2 个端口号,我总是只需要显示第二个端口号。为了澄清这一点,在上面的两个示例中,我需要从命令的输出中解析49188并端口值。49189docker port

实现这一目标的最短方法是什么?

答案1

听起来像是一项简单的工作sed

docker port <container-name> | sed 's/^.*:\([0-9]*\)$/\1/'

或者如果您愿意awk

docker port <container-name> | awk -F':' '{print $NF}'

答案2

docker port <container-name> | while read -r line;do echo ${line##*:};done

相关内容