添加整数直到小于给定值并仅显示那些行

Adding the integer till it is lesser than given value and display only those lines

帮我显示所有 JOB_ID 直到 Nodes_req 小于可用节点。

即添加 Nodes_req 的所有列直到它小于 Nodes_avail 然后只显示 JOB_ID

Nodes_avail=50

JOB_ID     | Tasks      | ptile      | Nodes_req
168797     | 126        | 16         | 8
168798     | 126        | 16         | 8
168799     | 126        | 16         | 8
168800     | 126        | 16         | 8
168801     | 126        | 16         | 8
168802     | 126        | 16         | 8
168811     | 126        | 16         | 8

预期输出为“168797 168798 168799 168800 168801 168802”,如

8*7 = 56 大于 50 所以只显示到 168802

试试这个:

awk '{if((sum+=)<50)print}' File

或更短:

awk '(sum+=)<50' File

样本:

$ awk '{if((sum+=)<50)print}' File
JOB_ID     | Tasks      | ptile      | Nodes_req
168797     | 126        | 16         | 8
168798     | 126        | 16         | 8
168799     | 126        | 16         | 8
168800     | 126        | 16         | 8
168801     | 126        | 16         | 8
168802     | 126        | 16         | 8

只需将7th字段值添加到变量sum(我们也可以使用$NF代替</code>,它会占用最后一个字段)。如果 <code>sum 小于 50,打印该行。 希望对您有所帮助!