我有以下格式的流输出,我喜欢过滤并打印出特定字段:
customer $2 $3
Address $2 $3 $4 $5 $6
例如,从第 1 行打印 field#2,从第 2 行打印 field#6,然后将它们一起打印,用空格分隔。
有人可以分享如何在 perl、awk 或 sed..etc 中完成此操作吗?
在 awk 中,您可以将数据保存在变量中(并在模式中使用行号)。例如,在您的示例中
从第 1 行打印 field#2,从第 2 行打印 field#6,然后将它们一起打印,用空格分隔。
该命令将是
awk 'NR==1 {x=$2} NR==2 {print x " " $6}'
awk 'NR==1{s=$2;next} {print s ORS $6 ORS s, $6}' file
这可能对您有用(GNU sed):
sed -rn '/^customer/{N;s/^((\S+)\s*){2}.*\n((\S+)\s*){6}.*/\2 \4/p}' file