次のように、サーバーとドメイン名を含むファイルがあります。
名前.txt:
ABCDomain ContractABCServer_1
ABCDomain ABC_server1
LinkDomain CoreLinkServer_1
TADDomain TADServer_1
(他のファイルに対してソートと独自の操作を実行した後、上記のファイルを取得しました。)---
上記のファイルから値を抽出し、xyzコマンド(サーバーを再起動するために使用されます)に次の形式の引数として渡す必要があります。
出力:
"ABCDomain(server:ContractABCServer_1,server:ABC_server1)","LinkDomain(server:CoreLinkServer_1)","TADDomain(TADServer_1)"
以下に説明するロジックを使用していますが、各コレクションのドメイン名は一度だけ表示される必要があるため、目的の出力は提供されません。私も同じラインを維持するのが難しいです。
- - - - - - -スタート- - -
DOMAIN=''
IFS=' '
while read line
do
DOMAIN=$(echo "$line" | awk -F " " '{print $1}')
for word in $line
do
if [[ "$word" == "$DOMAIN" ]]; then
Server=$(echo "$line" | awk -F " " '{print $2}' )
echo -n "(server:$ServerName"
fi
done
done < Names.txt
ベストアンサー1
{
if (dom[$1])
dom[$1]=dom[$1]","$2
else
dom[$1]=$2
}
END {
ORS=",";
for (d in dom)
if (d)
print ("\""d"(server:"dom[d]")""\"")
}
高速で汚れたawkソリューションは次のとおりです。 Something.awkとして保存し、以下を実行します。
awk -f something.awk Names.txt
あなたの質問に答えるためのクイックフィックスコメント:
{ dom[$1]=dom[$1] ? dom[$1]",server:"$2 : "server:"$2 }
END {
for (d in dom)
if (d) {
out && out = out","
out = out"\""d"("dom[d]")""\""
}
print out
}