次のAWKスクリプトファイルがあり、次から呼び出すと正常に動作します。
awk -f conv-units.awk 53567782
51.09 MB
conv-units.awk
#!/usr/bin/awk -f
BEGIN{ x = ARGV[1]
split("B KB MB GB TB PB",type)
for(i=5;y < 1;i--)
y = x / (2**(10*i))
printf("%.2f %s\n",y,type[i+2])
}
しかし、次のように実行すると失敗します。
awk 'BEGIN{ x = ARGV[1] split("B KB MB GB TB PB",type) for(i=5; y < 1; i--) y=x/(2**(10*i)) {printf("%.2f %s\n",y,type[i+2])}}' 53567782
答え1
echo 53567782 | awk '{x=$1; split("B KB MB GB TB PB",type); for(i=5;y < 1;i--) y = x / (2**(10*i)); printf("%.2f %s\n",y,type[i+2])}'
51.09 MB
交換しましたのでx=ARGV[1]
参考にしてくださいx=$1
。