-2

我有以下格式的流输出,我喜欢过滤并打印出特定字段:

customer        $2    $3
Address         $2    $3   $4   $5   $6

例如,从第 1 行打印 field#2,从第 2 行打印 field#6,然后将它们一起打印,用空格分隔。

有人可以分享如何在 perl、awk 或 sed..etc 中完成此操作吗?

4

3 回答 3

2

在 awk 中,您可以将数据保存在变量中(并在模式中使用行号)。例如,在您的示例中

从第 1 行打印 field#2,从第 2 行打印 field#6,然后将它们一起打印,用空格分隔。

该命令将是

awk 'NR==1 {x=$2} NR==2 {print x " " $6}'
于 2013-10-23T16:34:25.817 回答
1
awk 'NR==1{s=$2;next} {print s ORS $6 ORS s, $6}' file
于 2013-10-23T16:44:17.060 回答
0

这可能对您有用(GNU sed):

sed -rn '/^customer/{N;s/^((\S+)\s*){2}.*\n((\S+)\s*){6}.*/\2 \4/p}' file
于 2013-10-24T05:44:20.827 回答