私はすでに次のような行を生成するシェルコマンドを持っています(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