shell脚本检索文本的问题
本帖最后由 wokao112358 于 2013-05-10 14:04:59 编辑 有一段文本如下:
[RUN]AAAAAAAAAAAA
[OK]AAAAAAAAAAA
[RUN]BBBBBBBBBBBBBBBB
[OK]BBBBBBBBBBBBB
[RUN]CCCCCCCCCCCCC
CCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCC
[FAILED]CCCCCCCCCCCC
[RUN]DDDDDDDDDDDDDD
[OK]DDDDDDDDDDDDDDDD
shell脚本中我只需要描红部分中间的内容,请问该怎么写?
怎么在检索到FAILED字符串时再向上检索,然后通过sed来获取内容 shell 检索 sed
[解决办法]
sed是流编辑器,流过去了就是过去了,没法回朔。
换一个思路:是不是你要的行开头都有空格?而要去掉的行开头都是[?这个sed容易做到。
如果上面的办法不行,建议用功能更强的工具来做,awk及其它脚本语言都很容易做到。
[解决办法]
#!/bin/sh
awk 'BEGIN{flag=0;count=0}{
if($0~/FAILED/)
{
flag=3
}
if($0~/RUN/)
{
flag=1
count=0
}
if(flag==1)
{
array[count]=$0
count+=1
}
if(flag==3)
{
array[count]=$0
count+=1
exit
}
}END{for ( i=0;i<count;i++) print array[i]}' 1.txt
[RUN]CCCCCCCCCCCCC
CCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCC
[FAILED]CCCCCCCCCCCC