파이프라인 결과의 마지막 열을 조회 배열의 도움으로 교체

파이프라인 결과의 마지막 열을 조회 배열의 도움으로 교체

나는 이미 다음과 같은 줄을 생성하는 쉘 명령을 가지고 있습니다(from long ss -an....|...|...):

5 10.1.1.20 3307  (Nb IP port)

답변을 시뮬레이션하는 echo 명령이 있습니다.

echo -e "5 10.1.1.20 3307\n25 10.1.1.30 3307\n5 10.1.1.20 3308" 

배열이 있습니다.

declare -A dbArray
dbArray[3306]="mysql"
dbArray[3307]="mysql_test_db"
dbArray[3308]="mysql_other_db"

나는 다음 명령을 원합니다 :

echo -e "5 10.1.1.20 3307\n25 10.1.1.30 3307\n5 10.1.1.20 3308" | do_something

반품

5 10.1.1.20 3307 mysql_test_db
25 10.1.1.30 3307 mysql_test_db
5 10.1.1.20 3308 mysql_other_db

입력 데이터(예: 3307)에서 포트 번호를 가져오고 배열(이 경우 mysql_test_db)의 내용을 가져옵니다.

포트 번호를 뭔가로 바꾸는 방법과 배열을 관리하는 방법을 알고 있지만... 배열(모두 파이프라인에서)에서 "조회"하기 위해 포트 번호를 추출하는 방법에 대한 질문에는 대답할 수 없습니다. .

재미있는 도전이라고 생각했는데 나에겐 너무 어려웠다.

누구든지 도움을 줄 수 있다면...

저는 bash 4.2.46을 사용하는 Redhat 7을 사용하고 있습니다.

기독교

답변1

do_something아마도 bash 스크립트 일 것입니다.

#!/usr/bin/env bash

declare -A dbArray
dbArray[3306]="mysql"
dbArray[3307]="mysql_test_db"
dbArray[3308]="mysql_other_db"

while read -a args ; do
        echo ${args[0]} ${args[1]} ${args[2]} ${dbArray[${args[2]}]}
done

관련 정보