Я пытаюсь собрать 3 поля для строк a, b и c.Я знаю, что это можно сделать с помощью
grep -E 'a|b|c'
Однако я также хочу использовать grep для строк x, y и z, включая следующую строку.Я знаю, что это можно сделать с помощью
grep -A1 'x'
Итак, мой вопрос: возможно ли объединить все это в одну команду?Например, что-то вроде (я знаю, что эта команда не работает, просто пример)
grep -E 'a|b|c' -A1 'x|y|z'
Если есть лучший способ без grep или даже с использованием python, который был бы полезен, я просто прибегнул к использованию grepкак я думал, это будет быстрее, чем чтение файла строка за строкой с python.Ура!
РЕДАКТИРОВАТЬ: Итак, у меня есть большой файл с повторяющимися разделами, он выглядит примерно так:
{
"source_name": [
"$name"
],
"source_line": [
52
],
"source_column": [
1161
],
"source_file": [
"/somerandomfile"
],
"sink_name": "fwrite",
"sink_line": 55,
"sink_column": 1290,
"sink_file": "/somerandomfile",
"vuln_name": "vuln",
"vuln_cwe": "CWE_862",
"vuln_id": "17d99d109da8d533428f61c430d19054c745917d0300b8f83db4381b8d649d83",
"vuln_type": "taint-style"
}
И этот раздел между {} повторяется в файле.Итак, что я пытаюсь найти, это строка под source_name, source_line и source_file вместе с vuln_name, sink_file и sink_line.Поэтому пример вывода должен быть:
"source_name": [
"$name"
"source_line": [
52
"source_file": [
"/somerandomfile"
"sink_line": 55,
"sink_file": "/somerandomfile",
"vuln_name": "vuln",