我需要你关于这个问题的帮助。
我有 3 个临时文件和 nbf.txt。
我想将这 3 个临时文件中每小时的行复制到 nbf.txt:
每个临时文件中都有
每小时的临时文件:
tmp1
Receiveid 交易
========================
2020-05-29 00->12
tmp2
交易失败
====================
2020-05-29 00->1 失败
温度3
每小时打开失败的会话数
===============================
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 中的结果注意: 我需要以下结果使用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
但无法正常工作
答案1
一般来说,没有必要通过管道连接到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