awkを使用してIFS変数を環境変数に設定する

awkを使用してIFS変数を環境変数に設定する

whileループ変数とパイプを使用して変数をawkに設定するには?

これは私の現在のコードです。いくつかのアプローチを試しましたが、答えが見つからないようです。

while IFS= read -r var
do
MyNewVariable= ($var | awk '{print $1}')

私は正しい行を受け取っていることを知っていますが、新しい変数行から誤ったコマンドを受け取ります。可能ですか?

ベストアンサー1

あなたがここで何を求めているのかは非常に不明です。しかし、私はそのようなことをたくさんします。次の点を念頭に置いて質問を修正してください。

まず..読み取り部分

$var | awk '{print $1}'

それがするのは、「var」値の内容を解釈し、コマンドを実行してそれをawkにパイプして、最初のジョブを印刷することだけです。 $ varの内容が有効なコマンドではない可能性が高いため、失敗する可能性があります。

試みの正しい構文は次のとおりです。

command | while IFS= read -r var; do
    echo $var
done

コマンドの出力を処理するには、次のいずれかを実行します。

while IFS= read -r var; do
    echo $var
done < input_file

ファイルの内容を処理したい場合。

しかし、実際に「while」構造をラップすることは意味がありません。次のように簡単に実行できるからです。

command | awk '{ print $1 }'

または

awk '{ print $1 }' < file

awk で使用する変数を設定するには:

awk -v foo=$var '{ print foo }'

awkでIFSを設定することもできます。

awk 'BEGIN { FS=":" } { print $1 }'

おすすめ記事