如何使用 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 在前面,则此部分不变
假设我在文件中有如下内容:
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 在前面,则此部分不变