cut -f の出力を理解する

cut -f の出力を理解する

ご辛抱いただきありがとうございます。私は Linux 初心者で、cut コマンドの出力を解析する方法を理解するために助けが欲しかったのです。

それで、現在私は変数を持っています

x=$(discover nginx --human=nood | cut -f1,6)

私の出力はecho "$x次のようなリストです

インスタンスID IPアドレス

私のプログラムでは、xの各行に対してforループを実行し、最初の変数と2番目の変数を別々に抽出したいと考えています。例:配列a[0] = instanceID、a[1] = IPAdderessの場合

要素を個別に抽出する方法を教えてください。ループを実行して$xその中でカットを実行できることはわかっていますが、それを実行するより良い方法があるかどうかを知りたいと思っています。

答え1

そのためには、データを変数に格納する必要はまったくなく、出力をループするだけdiscoverで済みます。

discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done

あるいは、bashプロセス置換を理解するシェル(<( ... ))では、次のようになります。

while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )

これら2つの違いは、何らかの変数の値を持ちたい場合にのみ明らかになります。ループから外れて最初の例では、ループはサブシェル内で実行されるため、ループ内で設定された変数の値は使用されません。ループ(独自のローカル環境に存在します)。

discover2 番目の例では、サブシェルは使用されません (およびを使用してプロセス置換を実行するものを除くcut)。そのため、変数の値はループ後にアクセスできます。

関連情報