0

両方に含めることができる値を持つ2つの変数があります。2つの変数から一意のリストを作成したいと思います。

VAR1="SERVER1 SERVER2 SERVER3"
VAR2="SERVER1 SERVER5"

私は次の結果を得ようとしています:

"SERVER1 SERVER2 SERVER3 SERVER5"
4

3 に答える 3

6

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
于 2012-09-21T15:07:21.480 に答える
1

そしてもちろんあなたは

$ var1="a b c"
$ result=$var1" d e f"
$ echo $result

それであなたは連結を達成します。

変数もあります:

$ var1="a b c"
$ var2=" d e f"
$ result=$var1$var2
$ echo $result

変数を次々に配置することは、私が知っている最も簡単な連結方法です。多分あなたの計画のために十分ではありません。しかし、それは機能し、簡単なタスクに役立ちます。どんな変数にも役立ちます。

于 2012-09-21T15:18:01.050 に答える
1

順序を維持する必要がある場合、を使用することはできませんsortが、次のことを行うことができます。

for i in $VAR1 $VAR2; do echo "$VAR3" | grep -qF $i || VAR3="$VAR3${VAR3:+ }$i"; done

これはVAR3に追加されるため、最初にVAR3をクリアすることをお勧めします。また、すでにリストにあるFOO場合は追加されないため、grepに単語の境界を設定する際には、さらに注意が必要な場合がありますが、これは優れた手法です。FOOSERVER

于 2012-09-21T15:53:50.510 に答える