![如何解析 ksh 中的端口号字符串](https://linux22.com/image/99274/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%9E%90%20ksh%20%E4%B8%AD%E7%9A%84%E7%AB%AF%E5%8F%A3%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我想从命令的输出中解析我需要的端口号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
并端口值。49189
docker 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