Chinaunix
标题:
sed提取指定行前面第5行的内容~
[打印本页]
作者:
yuloveban
时间:
2013-08-15 09:25
标题:
sed提取指定行前面第5行的内容~
工作当中遇到一个问题, 有很多的文本,大概一个小时一个,要提取里面的一个数据, 这个数据在<huaxing> 这一行的前面第5行,刚刚我尝试用awk是可以提取出来的, 但是sed死活都弄不出来, 请看官们帮忙看看的~
如下文件:
2013081507.txt
.....
754
x
eqio
lda
lgiqo
<huaxing>
......
要提取754这个值~~
作者:
代号:军刀
时间:
2013-08-15 09:43
本帖最后由 代号:军刀 于 2013-08-15 09:45 编辑
sed -r ':1;N;/<huaxing>/!b1;s/.*\n([^\n]+)((\n[^\n]+){5})/\1/'
复制代码
作者:
心乃南部之星
时间:
2013-08-15 09:55
回复
2#
代号:军刀
这样会把754前面的数据同时取出来吧
作者:
WilliBhamlll
时间:
2013-08-15 09:56
sed -nr 'H;/<huaxing>/{x;s///;s/.*\n(.*)(.*\n){5}/\1/p}' file
754
复制代码
作者:
代号:军刀
时间:
2013-08-15 10:28
回复
3#
心乃南部之星
不是把754之前的行取出来,是会多打印huaxing后面的行
sed -nr ':1;N;/<huaxing>/!b1;s/.*\n([^\n]+)((\n[^\n]+){5})/\1/p'
复制代码
作者:
HH106
时间:
2013-08-15 11:22
grep效率比sed高
作者:
心乃南部之星
时间:
2013-08-15 11:32
回复
4#
WilliBhamlll
请问代码里 s/// 这句的作用是什么
作者:
代号:军刀
时间:
2013-08-15 11:34
回复
7#
心乃南部之星
就是把<huaxing>替换为空
作者:
心乃南部之星
时间:
2013-08-15 14:40
回复
8#
代号:军刀
我就是不明白s/// 怎么会把<huaxing>替换为空,还请解释下
作者:
代号:军刀
时间:
2013-08-15 16:05
回复
9#
心乃南部之星
[address]s/pattern/replacement/flags
替换命令应用于与address匹配的行。如果没有指定地址,那么就应用于Pattern匹配的行。如果正则表达式作为地址来提供,并且没有指定模式,那么替换命令匹配由地址匹配的内容。 --出处:sed & awk
作者:
心乃南部之星
时间:
2013-08-15 16:39
回复
10#
代号:军刀
终于明白了,看书不仔细。。多谢!
作者:
gc40800
时间:
2013-09-09 23:47
本帖最后由 gc40800 于 2013-09-09 23:48 编辑
fgrep -B 5 '<huaxing>' 2013081507.txt | head -1
作者:
reb00t
时间:
2013-09-10 00:15
回复
1#
yuloveban
比较喜欢 grep ..
grep -B 5 '<huaxing>' 1.txt |head -n 1
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2