Допустим, у меня есть файл с длинным вложенным массивом, который отформатирован следующим образом:
array(
'key1' => array(
'val1' => 'val',
'val2' => 'val',
'val3' => 'val',
),
'key2' => array(
'val1' => 'val',
'val2' => 'val',
'val3' => 'val',
),
//etc...
);
то, что я хотел бы сделать, это иметь способ grep / search в файле и, зная ключ 1, получить все строки (подмассив), которые он содержит. Это возможно?
Не с grep
но вы должны уметь это делать с awk
или sed
:
sed -n '/key1/,/)/p' file.txt
Если уровней вложенных массивов больше нет, то это должно работать:
awk '/key1/,/\)/' my_input_file
Обычно он печатается с key1 к следующей закрывающей скобке ).
Если это фиксированное количество элементов в массиве, вы можете использовать -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
для строк перед.