小编San*_*osh的帖子

bc - 命令:没有给出适当的结果

我正在尝试在 linux 中使用 bc 命令进行简单的计算。一旦我想要所有小数位的值。其他时候我只想要整数部分

想要获得完整的小数位

$ echo "scale=10; ((900/1303) * 928)/600" | bc
1.0683039140
Run Code Online (Sandbox Code Playgroud)

现在我只想得到 1(整数)部分,省略小数部分,所以我尝试

$ echo "scale=0; ((900/1303) * 928)/600" | bc
0
Run Code Online (Sandbox Code Playgroud)

它如何显示零。它应该显示为 1

有人可以帮忙吗。在这种情况下,我不想使用 awk 或 sed 提取整数部分

bc

2
推荐指数
1
解决办法
120
查看次数

awk:打印最后 N 列但使用不同的字段分隔符

我有以下命令可以更改整个记录的字段分隔符

$ echo "DOWN_COMP_002_wget_001_6_2020-04-10-13_40_27_395533885" | awk 'BEGIN{FS="_|-";OFS="::"} {$i=$i } 1'
DOWN::COMP::002::wget::001::6::2020::04::10::13::40::27::395533885
Run Code Online (Sandbox Code Playgroud)

但我只想要最后七列,即 2020::04::10::13::40::27::395533885

我可以尝试这样做

$ echo "DOWN_COMP_002_wget_001_6_2020-04-10-13_40_27_395533885" | awk 'BEGIN{FS="_"} {for(i=7;i<=NF;i++) printf $i"::"}'
6::2020-04-10-13::40::27::395533885::
Run Code Online (Sandbox Code Playgroud)

但这会::在最后添加一个我不想要的。

那么我怎样才能对最后 N 列使用 OFS 来做到这一点呢?

来自答案的结论:

我正在寻找 OFS 是否有任何可能的方法

我在下面看到的解决方案没有使用 OFS。所以不可能使用OFS

所以替代的解决方案是使用sedifawk我已经知道的内部

所以只有当我们像下面这样手动操作时,OFS 才有用

 print $1,$3,$5
Run Code Online (Sandbox Code Playgroud)

那么问题是: 那么有没有办法以print $1,$3,$5....编程方式生成打印,以便自动使用 OFS。

awk text-processing

1
推荐指数
1
解决办法
831
查看次数

标签 统计

awk ×1

bc ×1

text-processing ×1