我正在尝试在 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 提取整数部分
我有以下命令可以更改整个记录的字段分隔符
$ 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
所以替代的解决方案是使用sed
或if
在awk
我已经知道的内部
所以只有当我们像下面这样手动操作时,OFS 才有用
print $1,$3,$5
Run Code Online (Sandbox Code Playgroud)
那么问题是:
那么有没有办法以print $1,$3,$5....
编程方式生成打印,以便自动使用 OFS。