如何grep多次出现的特定字符串

时间:2014-01-21 13:24:15

标签: shell solaris solaris-10

我想捕获一个字符串“1行受影响..”。但问题是同一个文件中没有这样的字符串。

我关注捕获“1行受影响..”仅在字符串“UPDATE kplustp..Service SET Service_Name =”PositionService“,ServiceType = \'Z \',Hostname =”“”在日志文件中后出现。 “1行受影响..”将在“UPDATE kplustp..Service SET Service_Name =”PositionService“,ServiceType = \'Z \',Hostname =”“”

中的3 4个句子后出现

我正在开发solaris。

怎么办?

1 个答案:

答案 0 :(得分:1)

将ggrep与--byte-offset选项一起使用,以查找在要匹配的字符串之前将出现的最后一个字符串的字节位置。然后使用-c选项将其提供到/ usr / xpg4 / bin / tail中,以生成仅包含该字节位置之后的部分的文件的截断版本。然后,您可以进行搜索。

例如,要搜索file.txt以查找包含“foo”的行,但仅在包含“bar”的任何行的最后一行之后:

/usr/xpg4/bin/tail -c +`ggrep --byte-offset bar file.txt | cut -d: -f1 | tail -1` file.txt | grep foo

这在Solaris上比在Linux / BSD上要困难一些,因为默认的tail和grep是古老的,缺乏必要的选项。知道如何找到grep(ggrep)的GNU版本以及某些命令的XPG4(X / Open CAE可移植性指南4)版本具有有用的附加选项是一半的技巧。两者都应安装在大多数Solaris 10系统上。