【问题标题】:Doing arithmetic on every line in a single file? [duplicate]对单个文件中的每一行进行算术运算? [复制]
【发布时间】:2016-01-13 23:46:44
【问题描述】:

我有一个包含很多行的文件,它们都是数字,我想将它们相加并得到它们的总数,然后我将它放在一个循环中,这样它就会一直做这个数学运算所有这些行的结果数,我无法在 bash 中执行此操作。 这个例子说我将在 100 台不同的服务器上运行它,我想将这个 somefile 中的每一行添加到第二个,然后继续。

例如:

netstat -ant | grep -c :80 > /path/to/somefile

在 bash 或 Python 中有没有办法做到这一点?

【问题讨论】:

  • 你能扩展一下你的输入文件是什么样子的吗?您只想对每个文件中的(单列?)行值求和吗?

标签: python bash


【解决方案1】:

在 awk 中:

awk '{ sum += $1 } END { print sum }' somefile

【讨论】:

    【解决方案2】:

    这是一个 bash 脚本

    sum=0;
    while read p; do
      sum=$(($sum + $p));
    done <yourfile.txt
    
    echo $sum
    

    【讨论】:

    • 或者只是(( sum += p ))
    【解决方案3】:

    在python中,字符串操作很简单。但是,需要一些信息。

    • 号码有哪些类型? (int、float 等)
    • 什么是分隔数字的? (逗号、制表符、空格)

    一般形式是这样的:

    while (1)
    sum = 0
    with open /path/to/somefile as f:
     for line in f:
      sum_list = (line.split('number_separator')
       for entry in sum_list:
        sum += number_type(entry)
    

    现在,sum 将是文件的总和。你选择用它做什么取决于你。

    【讨论】:

    • 谢谢你,这一切都像:123123 12312 45645
    • 所以你的分隔符是''(空格字符)并且你的数字类型是int。只需将其粘贴在我给您的上面的代码中,它应该可以工作!您将希望避免 while (1) 循环,而是提供文件列表
    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多