grep/在文件中搜索多行

grep/在文件中搜索多行

假设我有一个带有长嵌套数组的文件,其格式如下:

array(
   'key1' => array(
       'val1' => 'val',
       'val2' => 'val',
       'val3' => 'val',
   ),
   'key2' => array(
       'val1' => 'val',
       'val2' => 'val',
       'val3' => 'val',
   ),
   //etc...
);

我想要做的是有一种方法来 grep/搜索文件,并通过了解键 1,获取它包含的所有行(子数组)。这可能吗?

答案1

不行grep,但是你应该可以用awk或者来做sed

sed -n '/key1/,/)/p' file.txt

答案2

如果没有更多级别的嵌套数组,那么这应该可以工作:

awk '/key1/,/\)/' my_input_file

基本上,它打印自键1到下一个右括号

答案3

如果数组中的项目数是固定的,则可以使用-Agrep 中的(开关后的行):

grep -A4 'key1' myfile 

   -A NUM, --after-context=NUM
          Print NUM  lines  of  trailing  context  after  matching  lines.
          Places   a  line  containing  a  group  separator  (--)  between
          contiguous groups of matches.  With the  -o  or  --only-matching
          option, this has no effect and a warning is given.

-B行前也有。

相关内容