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 }'