需要解析具有两对的双项表

需要解析具有两对的双项表

我有一个由程序输出产生的两条目表:

Variable1  : Value1  
Variable2  : Value2  
Variable3  : Value3  
Variable4  : Value4  
Variable5  : Value5  
Variable6  : Value6  
Variable7  : Value7 

我需要提取第一对和第五对,这是我用 grep 做的:

$ {program command} | grep -e Variable1 -e Variable5

产生以下输出:

Variable1  : Value1  
Variable5  : Value5  

这里的问题是我需要两对相同的行,但 grep -e 命令在每个 -e 之后打印 LF/CR;我需要同一行中的四对来根据文件大小进行最终排序。我想我可以从同一个命令行用 awk 或 perl 来做这个,但可惜我对它们还是有点陌生​​。

有任何想法吗?提前致谢。

答案1

如果您只想加入行,请使用tr删除换行符:

$ {program command} | grep -e Variable1 -e Variable5 | tr -d '\n'

完成整个事情awk

$ {program command} | awk '/Variable[15]/ { printf("%s ", $0) }'

相同于sed

$ {program command} | sed -n '/Variable[15]/H; $ { x; s/\n/ /g; p }'

答案2

如果您只想从 grep 连接两行,最简单的方法是通过管道fmt

$ {program command} | grep -e Variable1 -e Variable5 | fmt

如果行太长,请使用-w LINELENGTHfmt 选项。

答案3

您可以通过 Perl 的替换来删除换行符

perl -ne 's/\n/ /; print if /Variable[15]/'

如果最后需要换行,请添加

perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'

相关内容