陇西学做网站,微信开放平台是干什么的,wordpress更换ip后台登录不,青岛好的网站制作推广目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符#xff0c;整合数据为一行 一. 去除单个指定文本的换行符
#x1f449; info.txt
… 目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符整合数据为一行 一. 去除单个指定文本的换行符 info.txt
Some text before
2023 Some text after
Another 2023 line with 2023
20232023A line with consecutive 2023
Last line 2023⏹解析
:loop; N; $!b loop;用于循环整个文件s/\n2023/ 2023/g用于替换将换行符2023 替换为 空格2023
cat info.txt | sed :loop; N; $!b loop; s/\n2023/ 2023/g效果
Some text before 2023 Some text after
Another 2023 line with 2023 20232023A line with consecutive 2023
Last line 2023二. 去除多个指定文本的换行符 a.txt
Start 2023-11-05 05:15:10
eventControllerenent1
MemberIduuidw3e
ExecTime1000
Start 2023-11-05 05:17:10
eventControllerenent2
MemberIduuidA234
ExecTime2000⏹解析
s/\n\([eME]\)/ \1/g用于将 换行符e开头的数据换行符M开头换行符E开头的数据的换行符去掉并添加一个空格。
cat ./a.txt | sed :loop; N; $!b loop; s/\n\([eME]\)/ \1/g效果
Start 2023-11-05 05:15:10 eventControllerenent1 MemberIduuidw3e ExecTime1000
Start 2023-11-05 05:17:10 eventControllerenent2 MemberIduuidA234 ExecTime2000三. 抽取出指定数据
如下所示程序运行后生成了如下log
开头的数字(110120,123456等)代表了线程号SPLREQUEST表示请求的开始SPLEND表示请求的终了。同一个请求的SPLREQUEST和SPLEND的线程号相同。因为系统上线运行后同一时刻可能会存在多个并发请求所以同一个请求在同一个时刻打印的log可能分布在日志文件的不同的地方。我们可以根据线程号将同一个请求的SPLREQUEST和SPLEND相关的数据聚合到同一行然后进行处理。 20231126-2.log
110120 SPLREQUEST 内容1 AAA memberID1 eventControllerevent1
110120 SPLEND ExecTime200 ResultCode200
123456 SPLEND ExecTime300 ResultCode200123456 SPLREQUEST 内容2 BBB memberID2 eventControllerevent2
123444 SPLREQUEST 内容3 CCC memberID3 eventController
123434 SPLREQUEST 内容4 DDD memberID eventControllerevent4123444 SPLEND ExecTime200 ResultCode200
123434 SPLEND ExecTime400 ResultCode200
345345 SPLEND ExecTime500 ResultCode200
345345 SPLREQUEST 内容5 EEE memberID5 eventControllerevent5
674545 SPLREQUEST 内容6 FFF memberID6 eventControllerevent6674545 SPLEND ExecTime400 ResultCode2003.1 分别抽取SPLREQUEST和SPLEND的数据
在日志文件中请求开始的日志和请求结束的日志所在的位置都是错乱无规律的。我们可以先将请求开始相关的数据抽取到一个文件中再将请求终了的相关的数据抽取到一个文件中再将上述得到的两个文件合并
⏹将SPLREQUEST相关的数据抽取到文件中
grep SPLREQUEST ./20231126-2.log SPLREQUEST.txtSPLREQUEST.txt
110120 SPLREQUEST 内容1 AAA memberID1 eventControllerevent1
123456 SPLREQUEST 内容2 BBB memberID2 eventControllerevent2
123444 SPLREQUEST 内容3 CCC memberID3 eventController
123434 SPLREQUEST 内容4 DDD memberID eventControllerevent4
345345 SPLREQUEST 内容5 EEE memberID5 eventControllerevent5
674545 SPLREQUEST 内容6 FFF memberID6 eventControllerevent6 ⏹将SPLEND相关的数据抽取到文件中
grep SPLEND ./20231126-2.log SPLEND.txtSPLEND.txt
110120 SPLEND ExecTime200 ResultCode200
123456 SPLEND ExecTime300 ResultCode200
123444 SPLEND ExecTime200 ResultCode200
123434 SPLEND ExecTime400 ResultCode200
345345 SPLEND ExecTime500 ResultCode200
674545 SPLEND ExecTime400 ResultCode2003.2 通过join命令将文件合并
⏹由于请求开始和请求终了日志的线程号都是相同的且都在第一列因此可以通过join命令将两个文件通过线程号连接起来
join SPLREQUEST.txt SPLEND.txt ALL.txtALL.txt
110120 SPLREQUEST 内容1 AAA memberID1 eventControllerevent1 SPLEND ExecTime200 ResultCode200
123456 SPLREQUEST 内容2 BBB memberID2 eventControllerevent2 SPLEND ExecTime300 ResultCode200
123444 SPLREQUEST 内容3 CCC memberID3 eventController SPLEND ExecTime200 ResultCode200
123434 SPLREQUEST 内容4 DDD memberID eventControllerevent4 SPLEND ExecTime400 ResultCode200
345345 SPLREQUEST 内容5 EEE memberID5 eventControllerevent5 SPLEND ExecTime500 ResultCode200
674545 SPLREQUEST 内容6 FFF memberID6 eventControllerevent6 SPLEND ExecTime400 ResultCode2003.3 抽取出指定的数据
⏹抽取出线程号memberIDeventControllerExecTime。
-o表示 只显示匹配到的数据^\S*表示 非空开头的数据在此案例中特指线程号
grep -o -a -e ^\S* -e eventController\S* -e memberID\S* -e ExecTime\S* ALL.txt pick_data.txtpick_data.txt
110120
memberID1
eventControllerevent1
ExecTime200
123456
memberID2
eventControllerevent2
ExecTime300
123444
memberID3
eventController
ExecTime200
123434
memberID
eventControllerevent4
ExecTime400
345345
memberID5
eventControllerevent5
ExecTime500
674545
memberID6
eventControllerevent6
ExecTime4003.4 去除换行符整合数据为一行
cat pick_data.txt | sed :loop; N; $!b loop; s/\n\([emE]\)/ \1/g110120 memberID1 eventControllerevent1 ExecTime200
123456 memberID2 eventControllerevent2 ExecTime300
123444 memberID3 eventController ExecTime200
123434 memberID eventControllerevent4 ExecTime400
345345 memberID5 eventControllerevent5 ExecTime500
674545 memberID6 eventControllerevent6 ExecTime400