假设我有以下<Tab>分隔的文本文件:
file name size owner
file1.txt 12.345 root
file2.txt 0.172222 user1
file3.txt 2.46e2 user2
file4.txt 12345 root
file5.txt 21 user3
file6.txt 246.0 user1
file name owner last modified last accessed
text4.txt root 12.73 13.53
text5.txt user3 15.3333 34
file1.txt root 23 31.0032
Run Code Online (Sandbox Code Playgroud)
这个文件由几个“表格”组成,每个表格以标题行开始,然后包含一些数据行。有些列是数字列,但每个表可以有不同的编号,以及不同类型的列。列的类型事先未知,无法根据表头确定。
表中的数值使用各种格式 - 可能有整数、浮点十进制数或科学记数法中的数字。
我的问题是如何将此表中的所有数字字段转换为相同的格式。例如,我可能希望使用"%.2f"printf 格式说明符格式化每个数字字段。当然,其他非数字字段必须保持不变。
此外,我希望能够任意调整(例如,加 42,然后乘以 7)此文件中包含的每个数字字段。
我正在寻找的解决方案应该是基于现场的。它应该扫描整个文件,对于每个字段,它应该确定它是否是数字。如果它是数字,它应该打印其调整和格式化的值。否则,它应该只打印原件。
我知道可以用awk. 但是,如果我没记错的话,awk使用double了数字的内部表示,因此它可能与精确度和更大的价值问题。所以,理想情况下,我想使用其他东西,应该正确处理至少 64 位整数的东西。
有什么简单的方法可以实现这一目标吗?