Назад | Перейти на главную страницу

Как использовать обработку текста sed

пожалуйста, мне нужна ваша помощь по этой теме.

У меня есть 3 временных файла и nbf.txt.
Я хочу скопировать строки каждого часа из этих 3 временных файлов в nbf.txt:
внутри каждого временного файла у нас есть
временный файл на каждый час:
tmp1
Полученная транзакция
======================
2020-05-29 00-> 12

tmp2
Неудачная транзакция
===================
2020-05-29 00-> 1 не удалось

temp3
Неудачных открытых сессий в час
==============================
2020-02-29 00-> 2 сеанса

поэтому мне нужно использовать sed для каждого временного файла:

Я использую в своем скрипте следующую команду:

sed -i -e '1,$p' nbf.txt -e '1,3d' tmp1
sed -i -e '1,$p' nbf.txt -e '1,3d' tmp2
sed -i -e '1,$p' nbf.txt -e '1,3d' tmp3

результат внутри nbf.txt NB: пожалуйста, мне нужен результат ниже, используя sed или хвостик или awk

Received Transactions Per Hour
==============================
2020-02-29 00->69646 requests

2020-02-29 23->82666 requests

2361523 Received Transactions


Rejected Transactions Per Hour
===============================

0 Rejected Transactions


Failed Open Sessions Per Hour
==============================
2020-02-29 00->2 sessions
2020-02-29 22->1 sessions

8 Failed Sessions

но не работает корректно

В общем, нет смысла трубить от cat к grep к awk и даже другому awk потому что один awk может делать все это очень хорошо.

$ awk -F'[ :]' '/:/ { datestring=$1; a[$2]++;}; END { for(i=0;i<24;i++) '\
'{ ind=sprintf("%02d",i); '\
'printf "%s %2s->%7d\n",datestring,ind,(a[ind]>0) ? a[ind] : 0 ; }; }' \
Received_transaction.log-$Hour
2020-05-28 00->      0
2020-05-28 01->      0
2020-05-28 02->      0
2020-05-28 03->      0
2020-05-28 04->      0
2020-05-28 05->      0
2020-05-28 06->      0
2020-05-28 07->      0
2020-05-28 08->      0
2020-05-28 09->      0
2020-05-28 10->      0
2020-05-28 11->      0
2020-05-28 12->     13
2020-05-28 13->      0
2020-05-28 14->      0
2020-05-28 15->      0
2020-05-28 16->      0
2020-05-28 17->      0
2020-05-28 18->      0
2020-05-28 19->      0
2020-05-28 20->      0
2020-05-28 21->      0
2020-05-28 22->      0
2020-05-28 23->      0