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

时间:2015-03-03 20:48:09

标签: bash awk sed

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

ASD22
0.00133272
ASD23
0.00176711
ASD24
0.00175753

我想截断每个数字(忽略其余的数字)来得到类似的东西:

ASD22
0.0013
ASD23
0.0017
ASD24
0.0017

保持输出文件的“列外观”。 是否有一种简单而紧凑的方式来使用像sed或awk这样的东西?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这个awk可以工作:

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

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

答案 3 :(得分:0)

尝试grep

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