使用BASH将文件第二列的科学计数法转换为十进制(保留原格式)
用BASH转换文件第二列的科学计数法为十进制(保留原格式)
针对你需要转换文件第二列科学计数法的需求,awk是最适合的工具——它不仅能轻松处理列文本,还会自动识别数值格式并完成转换,同时能精准控制输出格式保持原文件的结构。
解决方案命令
假设你的输入文件名为input.txt,执行以下命令即可完成转换并输出到新文件:
awk '{printf "%s\t%.10f\n", $1, $2}' input.txt > output.txt
命令解释
$1:直接输出第一列的原始内容,确保第一列格式完全不变$2:awk会自动将第二列的科学计数法(比如1.05E-5、2.75E-6)解析为十进制数值printf "%s\t%.10f\n":用制表符\t分隔两列(和原文件格式一致),第二列保留10位小数,避免精度丢失;你可以根据需求调整小数位数,比如改成%.8f保留8位> output.txt:将结果写入新文件,避免覆盖原文件
测试示例
用你提供的样本数据测试,转换后第二列的科学计数法会变成这样:
43.83974818 0.6720400000
50.00000000 0.0100220000
...
200.00000000 0.0000105000
400.00000000 0.0000027500
...
原地修改文件(可选)
如果想直接修改原文件而不生成新文件,可以使用sponge工具(需要先安装moreutils包,比如apt install moreutils或brew install moreutils):
awk '{printf "%s\t%.10f\n", $1, $2}' input.txt | sponge input.txt
sponge会先读取所有转换后的内容,再写入原文件,避免边读边写导致的文件损坏问题。
内容的提问来源于stack exchange,提问作者goose goose
相关产品推荐
相关产品推荐

