java程序员需要会的linux知识

java程序部署在linux服务器上,我们经常会看日志、搜日志、日常巡检、修改服务器启动的脚本、修改配置文件等,涉及到linux档案的与目录的管理、查阅,压缩与解压,vim编辑器、bash与shell script、档案的权限等方面的内容,本文将介绍其中日志搜索最常用的grep的日常用法。

grep :global search regular expression(RE) and print out the line,全局正则式搜索并打印,这是一个强大的文本搜索命令,可以帮我们搜索日志中想要的内容

用法:grep [option] 关键字 要搜索的文件 

例如:grep 'Exception' account.log -i --col 搜索account.log中Exception关键字的,不区分大小写并高亮关键字


常用参数

grep -c 计算搜索到的次数

       -i  忽略大小写

       -n 显示行号

       -v 搜出没有关键字的那行

       -l 多文件查询时只输出包含匹配文件的文件名

       -w 只匹配单词而不是单词中的一部分,如bea而不是beautiful

       --col 高亮显示匹配到的文本

       -C number 显示匹配到文本的上下 如:-C10 显示匹配到文本的上下5行共10行


正则表达式:

        []代表其中一个,是一个,比如想搜索test或者taste的时候,用grep 't[ae]st' account.log,也可以使用通配符grep 't?st' account.log想搜a-z的英文单词的时候,用grep '[a-z]' account.log,-代表连续编号,同理大写的是[A-Z] 数字是[0-9] 如果想要大写小写和数字的话是[a-z A-Z 0-9]

      [^]反向选择,比如oo前面不带g的,grep '[^g]oo' account.log,再比如oo前面不想要小写的grep '[^a-z]oo' account.log,也可以用grep [^[:alnum]]oo' account.log表示,最后附上了一幅图说明一些表示法

      ^行首字符,比如想搜索以the为开头的行的行,那么用grep '^the' account.log,比如以小写字符开头的行的行,grep '^[a-z]' account.log,此处注意!^在[]外和在[]里是不一样的,前者代表行首,[^]代表反向

      $行尾字符,比如想找出来行尾结束符是.小数点的那一行,grep '\.$' account.log,注意.小数点需要转义

       \转义,忽略正则表达式中本来的意思

          .  任意一字符,小数点表示任意一字符,比如想找以g??d的单词,可以用grep 'g..d' account.log, 其中gd中间一定有2个字符

          *  重复字符,重复前一个0到无穷多次 比如:拥有1个o或者多个o的字符,grep 'o*' account.log  比如:拥有1个多多个的,grep 'oo*' account.log 这个里面的第一个o是一定会有的,第二个o代表0次或无穷次,同样拥有多个o的就用'ooo*' 比如:得到g....g中间无穷多个字符这样的字符,那么需要用grep 'g.*g' account.log

            {} 连续字符范围 , 限制一个字符有多少个 比如:连续5个o的,grep 'o\{5\}' account.log 注意此处{ } 要转义!同理,{2,5}代表2-5个,{2,}代表2个以上,注意转义!

            注意,正则表达式中的字符与一般指令的通配符意义不一样,如*在正则中代表重复字符,在通配符中代表任意多个

       

还可以用grep进行多文件处理:

例如:grep 'Exception' account1.log account2.log 搜索account1.log和account2.log 文件中所有带Exceptiong关键字的

        grep 'Exception' account* 搜索以account开头的所有的日志,一般日志会以日期来命名,在这种搜索多文件的时候,会在前面列出文件名

        grep Exception -l ./* 搜索当前目录下所有文件中包含Exception的,只列出文件的名字


java程序员需要会的linux知识_第1张图片






你可能感兴趣的:(linux)