次の内容(前行番号なし)を含むよく構成されたテキストファイルがあるとします。
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
ここで必要なのは、grepキーワード「eth」を使用して、eth0部分の行1、#3、#6、およびeth1部分の行#11、#13、#16をフィルタリングすることです。
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
どうすればいいですか?
ベストアンサー1
これは私にとって効果的です。
sed -n '/eth/{n;p;n;n;n;p;}' file
- 検索文字列
eth
n;
:行をスキップ、p;
:行を印刷するn;n;n;
:3行スキップして再印刷
編集する:
上の行、後の行、その後の3行が印刷されます。
sed -n -e '/eth/{x;1!p;g;$!n;p;n;n;n;p;D;}' -e h file
2番目の質問:おそらくコマンドを20回入力しないようですn;
。