Chinaunix
标题:
查找最后一个关键字以下几行。
[打印本页]
作者:
cbnuisve
时间:
2015-12-28 17:56
标题:
查找最后一个关键字以下几行。
请问下怎么去查找关键字出现的最后一次出现以下几行内容(包括关键字的内容),如果用sed , awk,grep等要怎样实现呢?
作者:
ly5066113
时间:
2015-12-29 09:03
回复
1#
cbnuisve
seq 25 | sed -n '1{N;N};N;/^1/h;${g;p};D'
作者:
cbnuisve
时间:
2015-12-29 10:33
本帖最后由 cbnuisve 于 2015-12-29 13:36 编辑
回复
2#
ly5066113
不是很明白,能否讲的明白些?
假如我有一个文件内容如下:
192.168.0.1 asdfasd sadfsd
192.168.0.3 fdsgsiorlsf1032fdg
192.168.0.4 dfgsdfgkoor5855
192.168.0.1 fgiu8945rt3wwe
192.168.0.9 98q3409r5qwer
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
192.168.0.101 9q43258qklmtrkqwer
我用192.168.0.1为关键字查询,我想要得到的结果是:
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
作者:
haooooaaa
时间:
2015-12-29 10:55
awk '$1~/192.168.0.1$/{a=$0;next}{a=a"\n"$0}END{print a}' file
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
192.168.0.101 9q43258qklmtrkqwer
复制代码
作者:
cbnuisve
时间:
2015-12-29 13:36
本帖最后由 cbnuisve 于 2015-12-29 13:37 编辑
回复
4#
haooooaaa
经测试会从第一行读取数据,达不到我想要的结果。
作者:
ljwd1000
时间:
2015-12-29 14:01
awk '$1~/192.168.0.1$/{a=$0;s=0;next}{if(s++<3)a=a"\n"$0}END{print a}'
复制代码
回复
5#
cbnuisve
作者:
ly5066113
时间:
2015-12-29 15:11
回复
3#
cbnuisve
sed -n '1{N;N};N;/192.168.0.1\b/h;${g;p};D' file
复制代码
作者:
cbnuisve
时间:
2015-12-29 17:12
回复
7#
ly5066113
谢谢,测试了一下,可以使用/。
作者:
cbnuisve
时间:
2015-12-29 17:14
回复
6#
ljwd1000
经测试,还是从前面读取数据。
作者:
ljwd1000
时间:
2015-12-29 17:54
回复
9#
cbnuisve
$ awk '$1~/192.168.0.1$/{a=$0;s=0;next}{if(s++<3)a=a"\n"$0}END{print a}' 1
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
BJIT002102+Administrator@BJIT002102 ~
$ cat 1
192.168.0.1 asdfasd sadfsd
192.168.0.3 fdsgsiorlsf1032fdg
192.168.0.4 dfgsdfgkoor5855
192.168.0.1 fgiu8945rt3wwe
192.168.0.9 98q3409r5qwer
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
192.168.0.101 9q43258qklmtrkqwer
复制代码
上你测试的代码看看
作者:
cbnuisve
时间:
2015-12-30 08:55
本帖最后由 cbnuisve 于 2015-12-30 08:56 编辑
回复
10#
ljwd1000
谢谢。测试了一下用以下可用
$ awk '$1~/192.168.0.1$/{a=$0;s=0;next}{if(s++<3)a=a"\n"$0}END{print a}' 1
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
BJIT002102+Administrator@BJIT002102 ~
$ cat 1
192.168.0.1 asdfasd sadfsd
192.168.0.3 fdsgsiorlsf1032fdg
192.168.0.4 dfgsdfgkoor5855
192.168.0.1 fgiu8945rt3wwe
192.168.0.9 98q3409r5qwer
192.168.0.1 asdfsad51
192.168.0.5 a89e9r89
192.168.0.6 asdfgasoiert
192.168.0.100 asdf9wre
192.168.0.101 9q43258qklmtrkqwer
复制代码
但是在我正常的环境下还是有问题,我是用tshark 抓包然后读取但还是从第一行开始读取。 tshark -r ip.txt -x -V |grep -E "192.168.0.1|Time"| awk '$1~/192.168.0.1$/{a=$0;s=0;next}{if(s++<3)a=a"\n"$0}END{print a}'
我的示例跟真实的可能有点差别。
Source: 192.168.0.1(192.168.0.1)
Arrival Time: Dec 28, 2015 09:40:07.716923991 CST
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1451266807.716923991 seconds
[Time delta from previous captured frame: 0.000266969 seconds]
[Time delta from previous displayed frame: 0.000266969 seconds]
[Time since reference or first frame: 59821.781043467 seconds]
Time to live: 126
Arrival Time: Dec 28, 2015 09:40:07.749227252 CST
。。。。。。
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2