awk / Perl,选择不同的字段并组合它们

时间:2013-10-23 16:31:23

标签: regex perl sed awk

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

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

例如第1行的打印字段#2和第2行的打印字段#6,然后用空格分隔打印它们。

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

3 个答案:

答案 0 :(得分:2)

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

  

从第1行打印字段#2,从第2行打印字段#6,然后用空格分隔打印它们。

命令是

awk 'NR==1 {x=$2} NR==2 {print x " " $6}'

答案 1 :(得分:1)

awk 'NR==1{s=$2;next} {print s ORS $6 ORS s, $6}' file

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed -rn '/^customer/{N;s/^((\S+)\s*){2}.*\n((\S+)\s*){6}.*/\2 \4/p}' file