両方に含めることができる値を持つ2つの変数があります。2つの変数から一意のリストを作成したいと思います。
VAR1="SERVER1 SERVER2 SERVER3"
VAR2="SERVER1 SERVER5"
私は次の結果を得ようとしています:
"SERVER1 SERVER2 SERVER3 SERVER5"
sort
以下は、2つのリストの組み合わせを、固有のパラメーターを使用してプログラムにパイプします-u
。
UNIQUE=$(echo "$VAR1 $VAR2" | tr ' ' '\n' | sort -u)
これにより、次の出力が得られます。
> echo $UNIQUE
SERVER1 SERVER2 SERVER3 SERVER5
編集:
ウィリアム・パーセルが以下のコメントで指摘しているように、これは文字列を新しい行で区切ります。再び空白で区切る場合は、ソートからの出力をパイプで戻すことができますtr '\n' ' '
。
> UNIQUE=$(echo "$VAR1 $VAR2" | tr ' ' '\n' | sort -u | tr '\n' ' ')
> echo "$UNIQUE"
SERVER1 SERVER2 SERVER3 SERVER5
そしてもちろんあなたは
$ var1="a b c"
$ result=$var1" d e f"
$ echo $result
それであなたは連結を達成します。
変数もあります:
$ var1="a b c"
$ var2=" d e f"
$ result=$var1$var2
$ echo $result
変数を次々に配置することは、私が知っている最も簡単な連結方法です。多分あなたの計画のために十分ではありません。しかし、それは機能し、簡単なタスクに役立ちます。どんな変数にも役立ちます。
順序を維持する必要がある場合、を使用することはできませんsort
が、次のことを行うことができます。
for i in $VAR1 $VAR2; do echo "$VAR3" | grep -qF $i || VAR3="$VAR3${VAR3:+ }$i"; done
これはVAR3に追加されるため、最初にVAR3をクリアすることをお勧めします。また、すでにリストにあるFOO
場合は追加されないため、grepに単語の境界を設定する際には、さらに注意が必要な場合がありますが、これは優れた手法です。FOOSERVER