web-dev-qa-db-ja.com

実数値を切り捨てて、整数以外の部分をawkで破棄するにはどうすればよいですか?

私は次のデータセットを持っています(すべて正の値)

入力ファイル

1 2.3456
1 5.02
2 3.9763333
2 0.123

2列目の数値を切り捨てて、整数以外の部分を破棄したいと思います。

どうやってawkでそれをするでしょうか?

必要な出力ファイル

1 2
1 5
2 3
2 0

ご協力いただきありがとうございます。

24
Tony

int()関数を試してください

awk '{$2=int($2)}1' file
36
kurumi
awk '{printf("%d %d\n"), $1, $2;}' inputFileName
5
qbert220

丸めるのではなく切り捨てたいので、%dの代わりに%0.fを使用します。

awk '{printf "%s %d\n", $1, $2}'
2
Will

以下はこれを行う必要があります

{ printf "%s %.0f\n", $1, $2}
0
vickirk

私はみんなに賛成しましたが、それを楽しむためにもう1つあります:)

awk '{split($2,a,"."); print $1" "a[1]}'
0
user332325

たとえば-0.1が-1に変換されるように、他の人が数字をフロアする方法を検索する場合は、次のようにすることができます。

$ printf %s\\n -1 -.9 -.1 0 .1 .9 1|awk '{x=int($0);print(x==$0||$0>0)?x:x-1}'
-1
-1
-1
0
0
0
1
0
nisetama