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

관련 정보