如何在awk中将搜索模式打印为列

如何在awk中将搜索模式打印为列,awk,Awk,我有一个输入文件,其中包含来自不同虚拟机的/proc/meminfo结果的集合。现在我需要在汇总表中编译结果 Exmaple:预期输出 MemAvailable MemFree 1234 223 2345 231 2312 229 9822 3466 5689 2376 我试着使用下面的逻辑,发现它不正确,有人能帮我纠正它吗 awk '/MemAvailable/{memA=$2

我有一个输入文件,其中包含来自不同虚拟机的
/proc/meminfo
结果的集合。现在我需要在汇总表中编译结果

Exmaple:预期输出

MemAvailable    MemFree
1234            223
2345            231
2312            229
9822            3466
5689            2376
我试着使用下面的逻辑,发现它不正确,有人能帮我纠正它吗

awk '/MemAvailable/{memA=$2;next} /MemFree/{memF=$2;next} {print memA,memF}' input_file

注:可通过运行两次或三次
cat/proc/meminfo
生成输入数据

如果我正确理解了您的问题,您希望打印名为
/proc/meminfo
下面的内容可能会对您有所帮助

awk 'BEGIN{print "MemAvailable\tMemFree"}/MemTotal/{val=$2;next} /MemFree/{print val,$2}' OFS="\t\t" /proc/meminfo

我建议使用
printf
而不是制表符进行格式化。制表符是邪恶的,但我不想开始一场战争。@kvantour,当然,先生,通过看到OP的输出,我想把制表符放到输出中。我们还可以通过删除上述代码中的OFS=“\t”来输出分隔符。