Следующий скрипт awk сделает это:
awk '
/^02-04-2010-07:24 --- ER GW 03$/ {skip=1}
{ln=$0;if (skip!=1){print}}
END {if (skip==1){print $ln}}'
как показано в следующей расшифровке:
$ echo '| 02/04/2010 07:24:20 | 20-24 | 26 | 13 | 2.60 |
| 02/04/2010 07:24:25 | 25-29 | 6 | 3 | 0.60 |
+---------------------+-------+------------+----------+-------------+
02-04-2010-07:24 --- ER GW 03
+---------------------+-------+------------+----------+-------------+
| date | sec | BOTH_MO_MT | MO_or_MT | TPS_PER_SEC |
+---------------------+-------+------------+----------+-------------+
| 02/04/2010 07:00:00 | 00-04 | 28 | 14 | 2.80 |
| 02/04/2010 07:00:05 | 05-09 | 27 | 14 | 2.70 |
...
...
...
...
END OF TPS PER 5 REPORT' | awk '
/^02-04-2010-07:24 --- ER GW 03$/ {skip=1}
{ln=$0;if (skip!=1){print}}
END {if (skip==1){print $ln}}'
, который производит:
| 02/04/2010 07:24:20 | 20-24 | 26 | 13 | 2.60 |
| 02/04/2010 07:24:25 | 25-29 | 6 | 3 | 0.60 |
+---------------------+-------+------------+----------+-------------+
END OF TPS PER 5 REPORT
по запросу.
Разбивка:
- изначально пропустить 0 (false).
- если вы найдете строку, с которой хотите начать пропуск, установите skip на 1 (true) - при необходимости измените этот шаблон.
- если пропуск равен false, выведите строку.
- независимо от пропуска, сохранить последнюю строку.
- в конце, если skip is true, вывести последнюю строку (проверка sjip предотвращает двойную печать).
Чтобы сделать это для нескольких файлов, вы можете просто использовать for
:
for fspec in *.txt ; do
awk 'blah blah' <${fspec} >${fspec}.new
done
Команда, необходимая для вашего обновления в комментарии (поиск "--- ER GW 03"
):
awk '
/--- ER GW 03/ {skip=1}
{ln=$0;if (skip!=1){print}}
END {if (skip==1){print $ln}}'