Não com grep
, mas você deve ser capaz de fazer isso com awk
ou sed
:
sed -n '/key1/,/)/p' file.txt
Digamos que eu tenha um arquivo com uma matriz aninhada longa, formatada assim:
array(
'key1' => array(
'val1' => 'val',
'val2' => 'val',
'val3' => 'val',
),
'key2' => array(
'val1' => 'val',
'val2' => 'val',
'val3' => 'val',
),
//etc...
);
O que eu gostaria de fazer é ter uma maneira de pesquisar / pesquisar um arquivo, e conhecendo a chave 1, pegue todas as linhas (a sub-matriz) que ele contém. isso é possível?
Se não houver mais níveis de matrizes aninhadas, isso deve funcionar:
awk '/key1/,/\)/' my_input_file
Basicamente, ele imprime de key1 para o próximo colchete de fechamento ) .
Se for um número fixo de itens no array, você pode usar o -A
(linhas após switch) com 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.
Também há -B
para as linhas anteriores.
Tags grep full-text-search