首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用grep打印匹配线之上或下面的N和Mth行?

如何用grep打印匹配线之上或下面的N和Mth行?
EN

Unix & Linux用户
提问于 2014-06-10 06:54:21
回答 2查看 1.9K关注 0票数 2

假设我有一个结构良好的文本文件,其内容如下(没有前导行号):

代码语言:javascript
复制
 1 Mon Jun 9 00:11:47 CST 2014
 2 eth0      Link encap:Ethernet  HWaddr D4:BE:D9:F5:5C:0E
 3           inet addr:10.179.113.125  Bcast:10.179.113.127  Mask:255.255.255.248
 4           inet6 addr: fe80::d6be:d9ff:fef5:5c0e/64 Scope:Link
 5           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 6           RX packets:1169385 errors:0 dropped:0 overruns:0 frame:0
 7           TX packets:250825 errors:0 dropped:0 overruns:0 carrier:0
 8           collisions:0 txqueuelen:10000
 9           RX bytes:365792552 (348.8 MiB)  TX bytes:20648578 (19.6 MiB)
10           Interrupt:24 Memory:d6000000-d6012100
11 Tue Jun 10 05:11:47 CST 2014
12 eth1      Link encap:Ethernet  HWaddr D4:BE:D9:F5:5C:10
13           inet addr:10.254.4.1  Bcast:10.254.4.255  Mask:255.255.255.0
14           inet6 addr: fe80::d6be:d9ff:fef5:5c10/64 Scope:Link
15           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
16           RX packets:3806158038 errors:0 dropped:23193484 overruns:0 frame:0
17           TX packets:1206000723 errors:0 dropped:0 overruns:0 carrier:0
18           collisions:0 txqueuelen:10000
19           RX bytes:1596108082 (1.4 GiB)  TX bytes:2960952707 (2.7 GiB)
20           Interrupt:25 Memory:d8000000-d8012100

现在,我需要的是过滤掉line#1,#3,#6用于eth0部分,第11、13、16行用于eth1部分,并使用grep关键字'eth‘。

代码语言:javascript
复制
Mon Jun 9 00:11:47 CST 2014    
inet addr:10.179.113.125  Bcast:10.179.113.127  Mask:255.255.255.248
RX packets:1169385 errors:0 dropped:0 overruns:0 frame:0
Tue Jun 10 05:11:47 CST 2014
inet addr:10.254.4.1  Bcast:10.254.4.255  Mask:255.255.255.0
RX packets:3806158038 errors:0 dropped:23193484 overruns:0 frame:0

我怎么做这个?

EN

回答 2

Unix & Linux用户

发布于 2014-06-10 07:01:52

这对我起了作用:

代码语言:javascript
复制
sed -n '/eth/{n;p;n;n;n;p;}' file
  • 搜索字符串eth
  • n;:跳过一行,p;:打印这一行
  • n;n;n;:跳过3行并再次打印

编辑:

这将打印上面的线、后面的线和3行后的线:

代码语言:javascript
复制
sed -n -e '/eth/{x;1!p;g;$!n;p;n;n;n;p;D;}' -e h file

还有你的第二个问题:我想你可能不会输入20次n;命令.

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/136344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档