awkの最初の文に必要な変数がありますか?

awkの最初の文に必要な変数がありますか?

今日はawkに苦労しています。私がこれをしようとすると:

df|awk '{print $2; $some=$2; print $some}'

期待どおりに動作し、ディスクサイズが2倍になりますが、そうすると次のようになります。

df|awk '{$some=$2; print $some}'

空行のみが表示されます。なぜこれが起こるのですか?私が理解した内容に問題がある可能性がありますが、なぜ後続のフィールドが機能するために1つのフィールドを使用する必要がありますか?私もこれを試しました:

df|awk '{print "hello"; $some=$2; print $some}'

私はそれぞれ改行で区切られた複数の「hello」を取得します。 $some=$2 はどこにありませんか?

私のdfコマンド出力:

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda5       38448788 32098732   4396932  88% /
udev             1914564        4   1914560   1% /dev
tmpfs             768744      984    767760   1% /run

ベストアンサー1

$前に - 記号を使用しないでくださいsome。最初のコマンドが $2印刷され、その後$some=$2に変換され(一部の実装ではすべてではなくに変換され、エラーメッセージが表示されます)、Record()をforに置き換えて印刷します。これは次のようなことを意味します。$0=$2someawksome""0$0$2$some$0

df|awk '{print $2; $0=$2; print $0}'

そして

df|awk '{$0=$2; print $0}'

あなたがしたいことは次のとおりです。

df|awk '{print $2; some=$2; print some}'

おすすめ記事