今日は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=$2
some
awk
some
""
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}'