grep常用选项
对于基本常用的命令,如果每次去百度或者Google命令的基本使用方式,因为信息的杂乱,我们很难快速检索到自己需要的信息。因此,作为一名专业的程序员,我们应该逐步建立自己的知识地图,不断总结完善自己的知识体系,当以后再遇到类似问题时,我们只需要回忆类似的场景获取对应的关键字,然后查阅自己的笔记,那么我们解决问题也会快速很多,并且也再次加深对之前知识的理解。好记性不如烂笔头
,下面将在log定位检索时常用的grep命令
选项总结如下:
查看指定内容对应的行号并显示改行
1 | grep -rn "search-content" < file.log |
查看指定内容对应的行号但忽略大小写
1 | grep -irn "search-content" < file.log |
在指定的文件类型中查找指定的内容
1 | find /path/to/ -regex '.*\.h\|.*\.cpp' | xargs grep -rn "search-content" |
查找匹配行前后内容
1 | grep -A 20 -B 10 -irn "search-content" < file.log |
匹配单词的全部内容
1 | grep -wrn "search-content" < file.log |
匹配指定内容之外的行
1 | grep -vrn "search-content" < file.log |
匹配范本文件中每一行,如果在范本文件中指定多个匹配的串,可以同时匹配任意的一行
1 | grep -f fromat.pat < file.log |
在程序调试时,需要查找多个关键之时,该选项特别有用!
ack-grep
ack-grep是linux平台下的代码全文检索工具,比grep更友好,更适合对代码的检索。
ack基本使用
1 | 在当前目录递归搜索单词eat |
常见文本处理
提取XML文档中指定标签的内容,其中使用tag设置标签名称:
1 | tag=loc && sed -n '/<'$tag'>/{/\/'$tag'/{p;b};:BG;N;/<\/'$tag'/!bBG;p}' baidusitemap.xml | awk -F "<$tag>" '{print $2}' | awk -F "</$tag>" '{print $1}' > urls.txt |
因为Github屏蔽百度对sitemap的获取,下面使用主动推送的方式向百度搜索提交sitemap文件内容:
1 |
|
Sed
1 | ls | xargs sed -i -e '/1234/d' # 当前目录下在源文件中删除指定内容的行 |