1.获取包含特定字符串的行号:
cat -n start.sh |grep 'JAVA_OPTS="'|awk '{print $1}'
2.获取改行的内容:
sed -n '10p' start.sh---获取第10行的内容
https://blog.csdn.net/wuzhiwuweisun/article/details/79136308
3.将内容替换第N行的内容
# sed '10c Hi' ab #第一行代替为Hi
<https://blog.csdn.net/lml282518588/article/details/52918765>
4.变量文件,并输出某个字符串出现的次数
awk -v RS='XXX' 'END {print --NR}' catalina.out
或者grep -o 'XXX' filename|wc -l
或者 grep -o ‘XX’\|YY' filename|wc -l #直接用\| 链接起来即可
5.抽取某文件中包含特定字符的行
awk '{if($0~"hello") print}' aa.log
解释说明:抽取aa.log整个日志文件中,包含“hello”的行,打印输出
6.获取包含特定字符的第一行行号和最后一行的行号
获取包含“2018-01-02”的第一行行号
cat 1.txt | egrep "2018-01-02" -nR | awk -F ":" '{print $1}'| awk '(NR==1){print $0}'
获取包含“2018-01-02”的最后一行行号
cat 1.txt | egrep "2018-01-02" -nR | awk -F ":" '{print $1}'| awk 'END{print $0}'
获取包含“2018-01-02”的第一行和最后一行的行号
cat 1.txt | egrep "2018-01-02" -nR | awk -F ":" '{print $1}'| awk '(NR==1){print $0} END{print $0}'
7.分析日志--爬取日志--统计日志出现次数
假设,你这会日志已经拿到手了,名字为xxx.log。
假设日志内容如下
//省略,都长差不多,贴其中一条就行 0:0:0:0:0:0:0:1 - - [27/Dec/2018:20:41:57 +0800] "GET /mvc2/upload.do HTTP/1.1" 404 949 http-bio-8080-exec-5 43 //省略
这个时候,你执行一串命令长下面这样的,进行统计就行!
cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r
出来等结果就是
2 [27/Dec/2018:20:40:44 1 [27/Dec/2018:20:47:58 1 [27/Dec/2018:20:47:42 1 [27/Dec/2018:20:41:57
然后你就知道,原来在20:40:44 分。。这个接口的QPS最高,达到了惊人的2QPS!
现在,来讲一下命令什么意思!
cat xxx.log : 读文件内容
grep 'GET /mvc2' : 将文件内容按照GET /mvc2 进行过滤
cut -d ' ' -f4 : 过滤出来的内容按照空格进行分割,取第四列内容
uniq -c : 每列旁边显示该行重复出现的次数
sort -n -r : 依照数值的大小排序
那么,如果是其他日志格式,无外乎 ”cut语句“的处理不同而已,道理类似!此法可以估算出单机的某接口的 “QPS” 是多少!