У меня есть файл журнала с большим количеством собранных журналов, я уже сделал команду grep
с регулярным выражением, которое выводит количество строк, которые соответствуют ему. Это grep
команда, которую я буду использовать для вывода совпавших строк:Вырезать скрипт Bash в определенных диапазонах
grep -n -E 'START_REGEX|END_REGEX' Example.log | cut -d ':' -f 1 > ranges.txt
Регулярного выражение условно может соответствовать началу конкретного журнала или его конца, таким образом, выход что-то вроде:
12
45
128
136
...
Идея состоит в том, чтобы использовать это как источник диапазонов, чтобы сделать конкретный разрез файла журнала с первого номера на второй и сохранить его в другом файле.
Диапазоны производятся парами выходных сигналов, в соответствии с примером первый диапазон - 12,45
, а второй 128,136
.
Я ожидаю увидеть в конечном файле весь текст из строки 12 to 45
, а затем от 128 to 136
. Проблема, с которой я столкнулся, заключается в том, что команда sed
, похоже, работает только с одним диапазоном.
sed -E -iTMP "$START_RANGE,$END_RANGE! d;$END_RANGEq" $FILE_NAME
Есть ли способ (возможно, с awk
), чтобы сделать это только в одном «цикл»? Ограничения: я могу использовать только поддерживаемую команду bash.
Просьба уточнить, что представляет собой диапазон от источника, а также дать пример ввода и вывода. – 123
Что вы на самом деле пытались сделать в первую очередь, прежде чем думать о сложном grep? – kabanus
Спасибо, я обновил ответ. – Andrea