假定一个多行文本文件,每行包含多个浮点数以及字母数字字符串和特殊字符。唯一的一致性是,所有浮点数都由单个空格与任何其他字符串分隔。此外,假设我们希望将[[each浮点数四舍五入到逗号后最多n个数字。除浮点数外的所有字符串均应保留in place和as is。让我们假设n = 5。
我知道可以通过awk轻松实现。我当前的代码(如下)仅四舍五入每行的最后一个浮点数,并吞没其前面的所有字符串。我该如何改善?
echo -e "\textit{foo} & 1234.123456 & -1234.123456\n1234.123456" |\
awk '{for(i=1;i<=NF;i++);printf("%.05f\n",$NF)}'
# -1234.12346
# 1234.12346
$ echo -e "\textit{foo} & 1234.123456 & -1234.123456\n1234.123456" |
awk '{for(i=1;i<=NF;i++){if ($i ~ "[0-9]+.[0-9]+"){printf "%.05f\n", $i}}}'
输出:
1234.12346 -1234.12346 1234.12346