Chinaunix
标题:
如何提取两特定字符串间的多行字符?
[打印本页]
作者:
kevinadmin
时间:
2011-05-22 23:50
标题:
如何提取两特定字符串间的多行字符?
本帖最后由 kevinadmin 于 2011-05-23 22:19 编辑
请都各位朋友,我想提取两个特定字符所有行的中间多行字符,
例如,文件如下:
asdfasdf
asdf
asdfasdfasdf
AAAAAA
dfasfsdfs #有用信息,开始
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
BBBBB
asdfasfsdsf #有用信息,结束
asdfasdf
asdf
asdf
请问:如何提取上面红色字体间的内容? 红色字体之间的内容不固定,有多有少。
用shel或者是perl都可以 只要能实现就行。
谢谢!~~~
作者:
yinyuemi
时间:
2011-05-22 23:55
回复
1#
kevinadmin
echo 'asdfasdf
asdf
asdfasdfasdf
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
BBBBB asdfasfsdsf
asdfasdf
asdf
asdf' | sed -n '/^AAAAAA/,/^BBBBB/{p;/^BBBBB/{:a;n;/^BBBBB/p;ta}}'
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
BBBBB asdfasfsdsf
复制代码
作者:
where27
时间:
2011-05-23 09:39
回复
2#
yinyuemi
如果文本格式是这样的呢?你的写法就用不了了吧?
asdfasdf
asdf
asdfasdfasdf
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
asgasdfasdfasdf
BBBBB asdfasfsdsf
asdfasdf
asdf
asdf'
复制代码
作者:
yinyuemi
时间:
2011-05-23 09:59
回复
3#
where27
不知lz的数据是不是包含这样的情况,如果是的话就不行了,再改下:
sed -n '/^AAAAAA/,/^BBBBB/{p;/^BBBBB/{n;:a;$! N;/.*\nBBBBB[^\n]*$/{p;n};$b;ba}}'
复制代码
作者:
nuclearxin
时间:
2011-05-23 10:16
sed "/AAAAAA dfasfsdfs/,`grep -n "BBBBB asdfasfsdsf" urlfile|tail -1|cut -d: -f1`! d" urlfile
复制代码
作者:
where27
时间:
2011-05-23 10:26
回复
4#
yinyuemi
作者:
nuclearxin
时间:
2011-05-23 10:37
sed 的partten space到底能N多少内容呢?
作者:
where27
时间:
2011-05-23 10:38
简化一下
sed -n '/^AAAAAA/{:a;N;${s/\(.*BBBBB[^\n]*\).*/\1/p};Ta}' file
复制代码
作者:
where27
时间:
2011-05-23 10:40
回复
7#
nuclearxin
我觉得可以一直N,直到内存耗尽
作者:
yinyuemi
时间:
2011-05-23 11:02
回复
6#
where27
啥意思
作者:
where27
时间:
2011-05-23 11:08
回复
10#
yinyuemi
改的真快~~我想了好一会
作者:
yinyuemi
时间:
2011-05-23 11:12
回复
11#
where27
其实,我那是不知从哪里来的小灵感
作者:
sunceenjoy
时间:
2011-05-23 12:09
awk '{if($1~/^AAA/){has=2;}else if($1~/^BBBB/) {has=1;}else{if(has!=2)has=0;} if(has)print}' 1.txt
作者:
kevinadmin
时间:
2011-05-23 14:00
晚上我在试一下你们的方法 谢谢!~~~
作者:
kevinadmin
时间:
2011-05-23 21:54
回复
4#
yinyuemi
这个确实可以,如果我想用脚本的第一个参数 $1 来替换 AAAAAAAA 应该怎么写?
'' 让$不再具有特殊的意义,变为本身了,这个执行就有问题了。
作者:
yinyuemi
时间:
2011-05-24 00:03
回复
15#
kevinadmin
sed -n "/$1/,/^BBBBB/{p;/^BBBBB/{n;:a;$! N;/.*\nBBBBB[^\n]*$/{p;n};$b;ba}}"
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2