【发布时间】:2015-09-08 02:18:58
【问题描述】:
我从 Junos Switches 以这种格式获得输出:
Physical interface: ge-0/0/7, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 42210774942 1163342
我只需要一行中的接口名称和丢弃的数据包值,如下所示:
ge-0/0/7 - 1163342
我尝试了sed 和awk 的许多不同组合。我试图合并 3 行以仅获取我需要的列,但它不起作用。
这就是我尝试合并行的方式:
cat file.txt.out | awk '{getline b; getline c;printf("%s %s %s\n",$0,b,c)}'
但是结果行似乎太长了,所以我无法得到需要的东西。请帮忙
输出看起来像这样(但更长):
Physical interface: ge-0/0/0, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 4582206 0
Physical interface: ge-0/0/1, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 14419826529 112564
Physical interface: ge-0/0/2, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 67593521901 1675707
Physical interface: ge-0/0/3, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 44283738671 977315
Physical interface: ge-0/0/4, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 98998665742 5065245
Physical interface: ge-0/0/5, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 56932179711 1446413
Physical interface: ge-0/0/6, Enabled, Physical link is Up
Queue counters: Queued packets Transmitted packets Dropped packets
0 N4M-Q1 0 34955222648 578513
【问题讨论】:
-
使用
awk,您可以说awk -F"[ :,]" 'NR==1{print $4} END{print $NF}'。这会在第一行打印第三个文本块,在最后一行打印最后一个文本块。 -
sed 用于单个行的简单替换。就这些。如果您已经在使用 awk,则永远不需要 sed。在您阅读并完全理解 awk.info/?tip/getline 并且对 awk 的其余部分有很好的工作知识之前,不要在 awk 中使用 getline。您永远不需要使用
cat来打开文件 - 大多数 UNIX 工具自己可以做到这一点(cmd file),其余的 shell 重定向可以做到(cmd < file)。