Linux 如何通过bash脚本中的管道从命令输出中提取2条信息?

Linux 如何通过bash脚本中的管道从命令输出中提取2条信息?,linux,bash,awk,sed,Linux,Bash,Awk,Sed,我有一个生成以下输出的命令: 我希望通过管道将此输出转换为将在第2行和第4行提取项目的内容,并在一行中输出它们,如下所示: 167 0m1.370s 我经常使用sed和awk来获取单个值,但我是否可以使用gerrymander这些流工具来处理多行输出?您可以使用管道将输出传输到此awk: awk '/\{0\}/{p=$2} /real/{print p, $2; exit}' 您可以使用管道将输出传输到此awk: awk '/\{0\}/{p=$2} /real/{print p, $2;

我有一个生成以下输出的命令:

我希望通过管道将此输出转换为将在第2行和第4行提取项目的内容,并在一行中输出它们,如下所示:

167 0m1.370s

我经常使用sed和awk来获取单个值,但我是否可以使用gerrymander这些流工具来处理多行输出?

您可以使用管道将输出传输到此awk:

awk '/\{0\}/{p=$2} /real/{print p, $2; exit}'

您可以使用管道将输出传输到此awk:

awk '/\{0\}/{p=$2} /real/{print p, $2; exit}'

如果它始终是第二行和第四行的第二个元素,则可以通过管道连接到以下位置:

awk 'NR==2 {p=$2} NR==4 {print p, $2; exit}'

如果它始终是第二行和第四行的第二个元素,则可以通过管道连接到以下位置:

awk 'NR==2 {p=$2} NR==4 {print p, $2; exit}'

使用GNU awk进行多字符RS:

$ awk -vRS='^$' '{print $4, $6}' file
167 0m1.370s

使用GNU awk进行多字符RS:

$ awk -vRS='^$' '{print $4, $6}' file
167 0m1.370s

对于这个小数据,您真的需要
next
exit
。这应该可以很好地工作:
awk'/\{0\}/{p=$2}/real/{print p,$2}'
是的,它可以工作,但出于效率原因,使用了
next
exit
。如果在
/real/
模式之后有数千行呢<代码>退出将在打印后立即终止awk
next
肯定可以取出。对于这个小数据,您真的需要
next
exit
。这应该可以很好地工作:
awk'/\{0\}/{p=$2}/real/{print p,$2}'
是的,它可以工作,但出于效率原因,使用了
next
exit
。如果在
/real/
模式之后有数千行呢<代码>退出将在打印后立即终止awk<代码>下一步肯定可以取出。