参考: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html
当时需求:查看系统日志,统计系统的处理时间(从请求进去系统到系统返回)
日志文件: 1.log
开始处理:
1. 将日志中的关键行(初始、结束、关键节点)打印出来/输出到文件(后添加:> 2.log):
cat 1.log | grep key //根据关键字输出
cat 1.log | egrep '(start handle)+|(end handle)+' //根据两个关键字
如果不能一次查找出来(线程数较多),可以先输出到文件,再重复根据线程名查找一次。
grep最常用的分组,egrep可以使用更多的正则符号,fgrep可以认为就是不使用正则字符(应该可以这么理解,原文:正则表达式中的元字符表示回其自身的字面意义,不再特殊)。
cat 1.log | grep key 可以写为: grep key 1.log ,同理。
awk和wc命令
ps -ef | grep java | awk '{print $2}' : 可以显示出所有Java进程的pid,
awk中可以默认使用空白分隔符,可以使用awk -F,指定分隔符,其中$2就是分割后输出第二个字符串,
ps -ef | grep java | awk '{print $2}' | wc -l : 可以统计当前一共有多少Java进程
wc中-c 统计字节数,-l 统计行数,-m 统计字符数,这个标志不能与 -c 标志一起使用,-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
VI中
//以下删除命令好多都是剪贴,删除应该就是剪贴吧。。
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
1,3 co 4 将1-3行复制到4行之后
set nu 显示行数
nu 查看行数
u 撤销
U 撤销,撤销上一次撤销, 就是撤销/恢复重复
gg 光标移动到第一行
G 光标到最后一行
1/2/3 任意数字,光标到指定数字行
"zz"命令会把当前行置为屏幕正中央,"zt"命令会把当前行置于屏幕顶端,"zb"则把当前行置于屏幕底端.
搜索: "?"命令与"/"的工作相同,只是搜索方向相反.n下一次出现的位置,"N"命令会重复前一次查找,但是与最初用"/"或"?"指定的搜索方向相反。
如果查找内容忽略大小写,则用命令"set ignorecase", 返回精确匹配用命令"set noignorecase"
用于转义特殊字符