![grep/在文件中搜索多行](https://linux22.com/image/512104/grep%2F%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%90%9C%E7%B4%A2%E5%A4%9A%E8%A1%8C.png)
假设我有一个带有长嵌套数组的文件,其格式如下:
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
如果数组中的项目数是固定的,则可以使用-A
grep 中的(开关后的行):
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
行前也有。