piping the output of a cut operation to bc
本问题已经有最佳答案,请猛点这里访问。
有没有可能让
假设我有以下基于列的文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | PAK_01896 PAU_03392 75.8 149 32 1 1 145 1 149 * * PAK_02014 PAU_03392 69.8 149 45 0 1 149 1 149 * * PAU_02074 PAU_03392 77.2 149 30 1 1 145 1 149 * * PAU_02206 PAU_03392 69.1 149 46 0 1 149 1 149 * * PAU_02775 PAU_03392 79.2 149 31 0 1 149 1 149 * * PAK_02606 PAU_03392 78.5 149 32 0 1 149 1 149 * * PAU_01961 PAU_03392 67.1 149 49 0 1 149 1 149 * * PAK_03203 PAU_03392 95.3 149 7 0 1 149 1 149 * * PLT_01716 PAU_03392 76.5 149 35 0 1 149 1 149 * * PLT_01758 PAU_03392 79.2 149 31 0 1 149 1 149 * * PAU_03392 PAU_03392 100.0 149 0 0 1 149 1 149 * * PLT_01696 PAU_03392 78.5 149 32 0 1 149 1 149 * * PLT_02424 PAU_03392 78.5 149 32 0 1 149 1 149 * * PLT_01736 PAU_03392 77.2 149 34 0 1 149 1 149 * * PLT_02568 PAU_03392 67.1 149 49 0 1 149 1 149 * * PAK_01787 PAU_03392 66.4 149 50 0 1 149 1 149 * * |
我希望能够对某些字段执行一些计算,例如求和和/或求第3列的平均值。在我的头脑中,我首先想到尝试这个:
1 | cut -f3 column_based_file.txt | bc |
但这可能会不足为奇地返回第3列中每个项的值。
我知道在线程中有可行的解决方案,比如我可以使用的这个解决方案,但是由于Cut是我在bash中处理基于列的数据的一段时间的首选方法,所以我想知道它是否有可能?也许
编辑在建议的线程和给出的答案中有一些很好的解决方案。出于好奇,因为我最初是这么想的,有没有人有基于
我会用锥子。在我看来,它更适合这项任务。假设您的数据存储在
1 2 | {s += $3 } END {print"Sum:", s," Avg:", s / FNR} |
用命令