Shell合并多个连续行,只有数字不同

时间:2015-12-18 03:57:45

标签: shell awk sed

最近我遇到了一个问题,即编写一个工具来合并几个连续的行,只有不同的数字。 例如:

show plim xge-plim registers port 0
show plim xge-plim registers port 1
show plim xge-plim registers port 2
show plim xge-plim registers port 3
show ethernet infra internal vlan-ma global
show ethernet infra internal vlan-ma subs

我想将其更改为

show plim xge-plim registers port <number>
show ethernet infra internal vlan-ma global
show ethernet infra internal vlan-ma subs

有没有办法做到这一点?我好好想了几天......

下面的数字不应该删除,请保留。 show tech-support routing ospfv3 terminal show tech-support routing ospfv2 terminal show tech-support路由ipv4终端 show tech-support routing ipv6 terminal

预计会删除一个。

显示plim xge-plim寄存器端口8 show plim xge-plim注册端口9 show plim xge-plim注册端口10 show plim xge-plim register port 11

将其更改为 显示plim xge-plim寄存器

1 个答案:

答案 0 :(得分:2)

$ awk '{sub(/[0-9]/,"<number>")} !seen[$0]++' file
show plim xge-plim registers port <number>
show ethernet infra internal vlan-ma global
show ethernet infra internal vlan-ma subs