如何使用 sed、awk 或类似的东西截断文件中的每个浮点数?

How to truncate every float number in a file using sed, awk or something like it?

假设我在文件中有如下内容:

ASD22
0.00133272
ASD23
0.00176711
ASD24
0.00175753

我想截断每个数字(忽略其余部分)以获得类似的内容:

ASD22
0.0013
ASD23
0.0017
ASD24
0.0017

将 "column look" 保存到输出文件。 是否有使用 sed 或 awk 之类的简单而紧凑的方法来做到这一点?

$ cut -c1-6 file
ASD22
0.0013
ASD23
0.0017
ASD24
0.0017

尝试 grep:

$ grep -Eo "^.{,6}" file.txt 
ASD22
0.0013
ASD23
0.0017
ASD24
0.0017

这个 awk 可以工作:

awk ' == (+0) { = sprintf("%0.4f", -0.00005)} 1' file
ASD22
0.0013
ASD23
0.0017
ASD24
0.0017

-0.00005 是为了避免舍入浮点数。

sed 's/\([0-9]\.[0-9]\{4\}\)[0-9]\{1,\}//' YourFile
  • 截断到点后的 4 位数,如果有的话
  • 外观保留,因此如果数字不是以 0. 开头或 space 在前面,则此部分不变