0

全部,

我有一个文本文件,比如 sample.txt。该文件包含许多分别以 [ 和 ] 开头和结尾的块。(请参阅附图)。

现在,给定一个字符串,比如“finance3”,是否可以使用反向正则表达式(或类似的东西)来找到“保存”字符串的行(即块)范围。

在此处输入图像描述示例中(请参见附图),给定的字符串是第 18 行中的“finance3”。必须返回的块是:17-24。

一种方法是,获取字符串所在的行号并向后退,grep 查找包含'['的行号。同样,从字符串所在的行开始,向前走每一行,当遇到 ']' 时在该行停止。

但是,有没有更好的方法使用正则表达式来做到这一点?

在此先感谢您的时间。

拉维。

4

1 回答 1

0

您可以告诉 awk 记录由 ] 分隔,然后如果它与您的搜索字符串匹配则打印该记录:

awk 'BEGIN { RS = "]" } { if (match($0, "finance3")) { print $0 RS } }' sample.txt
于 2013-09-19T16:26:18.233 回答