我的输出如下,使用awk我需要使用模式匹配" Memory"然后打印第一行,然后打印最后一列/ 1024,
结果应为32或32768,这可以通过不同的命令序列来实现,例如,
grep "Memory" /var/tmp/file.out | tail -1 | awk '{print $NF/1024}'
上面的命令会调用很多次,所以我在awk中寻找一个命令。
Data:
Status = Running
Memory (MB) = 32768
Max. Memory (MB) = 32768
Processors = 16
Max. Processors = 16
Priority = 50
Processor Cap = 100
High Availability = No
答案 0 :(得分:1)
问题中shell管道的awk实现将是:
awk '/Memory/{v=$NF;f=1}END{if(f)print v/1024}' file
对于示例输入,它将打印
32
答案 1 :(得分:0)
我认为需要"打印第一行"这就是你想要的?
$ awk 'flush() { if (p) { print c; print r; p = 0 } }
BEGIN { p = 0 }
/^[^:]+:/ { flush(); c = $0 }
/Memory.*=/ { r = $NF/1024; p = 1 }
END { flush() }
' /var/tmp/file.out
Data:
32