修改特定列中的特定值

时间:2019-05-03 01:48:22

标签: linux bash awk sed

我有一个庞大的DF,例如:

1   39.12   16.88   1   100   2015

2   39.04   16.98   1   100   2015

3   3920    1650    1   100   2015

4   3920    1666    1   100   2015

5   3936    1650    1   100   2015
.
.
.

我想将第2列和第3列中非十进制的所有值转换为:

1   39.12   16.88   1   100 2015

2   39.04   16.98   1   100 2015

3   39.20   16.50   1   100 2015

4   39.20   16.66   1   100 2015

5   39.36   16.50   1   100 2015
.
.
.

有帮助吗?

1 个答案:

答案 0 :(得分:1)

带有awk和列:

awk '$2 !~  /\./ {$2=sprintf("%.2f",$2/100)}
     $3 !~  /\./ {$3=sprintf("%.2f",$3/100)}
     {print}
    ' file | column -t

输出:

1  39.12  16.88  1  100  2015
2  39.04  16.98  1  100  2015
3  39.20  16.50  1  100  2015
4  39.20  16.66  1  100  2015
5  39.36  16.50  1  100  2015