LINUX.ORG.RU

История изменений

Исправление kostik87, (текущая версия) :

Что-то вроде:

grep -n 'CPU NUMBER: CPA275595\|Hose configuration correctly sent' SRV22_09_0.LOG  | tail -n 2 > /tmp/str_pos
FSTR=`sed -n '1p' /tmp/str_pos | cut -f1 -d":"`
LSTR=`sed -n '2p' /tmp/str_pos | cut -f1 -d":"`
sed -n "$FSTR,$LSTRP" SRV22_09_0.LOG

В начале посредством grep выбираем из файла все строки с текстом начальной и конечной строки и сохраняем во временный файл /tmp/str_pos.

Вывод grep будет примерно такой:

100:12.09.2022 16:30:01 KIT: GK7C-3 VERSION: V9.18 CPU NUMBER: CPA275429
120:12.09.2022 16:31:45 Hose configuration correctly sent

Затем в переменные FSTR и LSTR помещаем номера строк, в примере 100 и 120.

Затем посредством sed выбираем из файла строки с номерами с 100 по 120.

Но здесь нужно добавить проверку, что строки «12.09.2022 16:31:45 Hose configuration correctly sent» теоретически может не быть. Поэтому в этом случае в файле /tmp/str_pos номер последней строки будет меньше номера начальной строки.

В этом случае sed выведет только одну строку, с большим номером.

Доработай проверку сам.

и создает новый с новым названием и как-то не айс раз в месяц переделывать команду

Если имя файла формируется по маске SRV22_09_0.LOG, то можешь использовать команду date для формирования маски

date '+SRV%y_%m_0'
FNAME=`date '+SRV%y_%m_0.LOG'`

Используй определение переменной с именем входного файла.

Исправление kostik87, :

Что-то вроде:

grep -n 'CPU NUMBER\: CPA275595\|Hose configuration correctly sent' SRV22_09_0.LOG  | tail -n 2 > /tmp/str_pos
FSTR=`sed -n '1p' /tmp/str_pos | cut -f1 -d":"`
LSTR=`sed -n '2p' /tmp/str_pos | cut -f1 -d":"`
sed -n "$FSTR,$LSTRP" SRV22_09_0.LOG

В начале посредством grep выбираем из файла все строки с текстом начальной и конечной строки и сохраняем во временный файл /tmp/str_pos.

Вывод grep будет примерно такой:

100:12.09.2022 16:30:01 KIT: GK7C-3 VERSION: V9.18 CPU NUMBER: CPA275429
120:12.09.2022 16:31:45 Hose configuration correctly sent

Затем в переменные FSTR и LSTR помещаем номера строк, в примере 100 и 120.

Затем посредством sed выбираем из файла строки с номерами с 100 по 120.

Но здесь нужно добавить проверку, что строки «12.09.2022 16:31:45 Hose configuration correctly sent» теоретически может не быть. Поэтому в этом случае в файле /tmp/str_pos номер последней строки будет меньше номера начальной строки.

В этом случае sed выведет только одну строку, с большим номером.

Доработай проверку сам.

и создает новый с новым названием и как-то не айс раз в месяц переделывать команду

Если имя файла формируется по маске SRV22_09_0.LOG, то можешь использовать команду date для формирования маски

date '+SRV%y_%m_0'
FNAME=`date '+SRV%y_%m_0.LOG'`

Используй определение переменной с именем входного файла.

Исходная версия kostik87, :

Что-то вроде:

grep -n 'CPU NUMBER\: CPA275595\|Hose configuration correctly sent' SRV22_09_0.LOG  | tail -n 2 > /tmp/str_pos
FSTR=`sed -n '1p' /tmp/str_pos | cut -f1 -d":"`
LSTR=`sed -n '2p' /tmp/str_pos | cut -f1 -d":"`
sed -n "$FSTR,$LSTRP" SRV22_09_0.LOG

В начале посредством grep выбираем из файла все строки с текстом начальной и конечной строки и сохраняем во временный файл /tmp/str_pos.

Вывод grep будет примерно такой:

100:12.09.2022 16:30:01 KIT: GK7C-3 VERSION: V9.18 CPU NUMBER: CPA275429
120:12.09.2022 16:31:45 Hose configuration correctly sent

Затем в переменные FSTR и LSTR помещаем номера строк, в примере 100 и 120.

Затем посредством sed выбираем из файла строки с номерами с 100 по 120.

Но здесь нужно добавить проверку, что строки «12.09.2022 16:31:45 Hose configuration correctly sent» теоретически может не быть. Поэтому в этом случае в файле /tmp/str_pos номер последней строки будет меньше номера начальной строки.

В этом случае sed выведет только одну строку, с большим номером.

Доработай проверку сам.

и создает новый с новым названием и как-то не айс раз в месяц переделывать команду

Если имя файла формируется по маске SRV22_09_0.LOG, то можешь использовать команду date для формирования маски

date '+SRV%y_%m_0'
FNAME=`date '+SRV%y_%m_0.LOG'`

Используй определение переменной с именем входного файла.