[实践OK]Linux下用Grep -E参数实现$grep -E  ^[a-Z] supervisord.conf显示非注释项,ABC def abc,加上正则表达式实现,多个函数查找的方法,及实现查看所查找单词的前三行后两行的环绕搜索,grep一个多行单独IP间隔包含文字里的IP列表出来,grep查找时显示找到那行的后面N行-A,和前面N行参数-B的实际应用。

jackxiang 2010-12-28 20:14 | |
cat  xxxx.txt|grep -Ev "无锡|腾讯云|华为云|微软云|阿里云|百度云|金山云"  #grep 正则接合v排除的查询

api-itv-xxxx-cn-master-php-db578496b-zxxnj   6/6     Running   0          65m
kubectl get po -l pro=itv_api|grep -E "Running +0"    #加号+:匹配1个或多个前面的字符,它和星号*的作用相似,但它不匹配0个字符的情况。比如,"ab+c"将匹配"abc"、“abbc”、“abbb...c”等。


不用加正则参数也成,直接用egrep:

rpm -qf /bin/egrep
grep-2.20-3.el6_7.1.x86_64
rpm -ql grep-2.20-3.el6_7.1.x86_64|grep grep
/bin/egrep
/bin/fgrep
/bin/grep


cat videoupload.php |grep upload --color //给加点颜色。

背景:实现一次性查找多个函数的awk实现,以及grep一个文件里的所有IP行:
-n :grep 行输出,--line-number         print line number with output lines
一)Grep -E参数,加上正则表达式实现,多个函数查找,如下:
grep -Erin 'atoi|itoa|atol|ltoa|intval'  ./

配上shell 文件 findfunPath.sh如下:
#!/bin/bash
findPath=$1
#judge folder is exist
if [ ! -d "$findPath" ]; then
    echo "Sorry,Input path is not exist.";
    echo "You can try follow command to check it: ls ${findPath}";
    exit 0
fi
grep -Erin 'atoi|itoa|atol|ltoa|intval'  ${findPath}|awk -F":" '{print "\nFileLineNumber=" $2 "     ExistFileName=" $1 "\nDetailInfo
=" $0}'

简单示例:
findfunPath.sh /usr/local/pro/




二)查看所查找单词的前三行后两行的环绕搜索:


[root@iZ25dcp92ckZ multepoolserver]# grep  -rin -B 3 -A 2 "pthread_create Failed" ./multepoolser.c
569-        threadNum[i]=i;//给数组赋值,传入线程编号值,后传入线程里。
570-        //if(pthread_create(&handleEpollRd[i],NULL,pthread_handle_message, (void *)&i)){
571-        if(pthread_create(&handleEpollRd[i],NULL,pthread_handle_message, (void *)&threadNum[i])){
572:                sprintf(errOut,"pthread_create Failed : %s - %m\n",strerror(errno));
573-                loger(errOut);
574-                return -1;
--
591-        writeThreadNum[i]=i;//给数组赋值,传入线程编号值,后传入线程里。
592-        //if(pthread_create(&saveUpFilePart2Diskk[i],NULL,sync_additional_writing_worker, NULL )){
593-        if(pthread_create(&saveUpFilePart2Diskk[i],NULL,sync_additional_writing_worker, (void *)&writeThreadNum[i])){
594:                sprintf(errOut,"pthread_create Failed : %s - %m\n",strerror(errno));
595-                loger(errOut);
596-                return -1;

三)grep一个多行单独IP间隔包含文字里的IP列表出来:



四)grep查找时显示找到那行的后面N行-A,和前面N行参数-B的实际应用之查找域名里的root有哪些路径:
grep -Er "common.jackxiang.com|vote.jackxiang.com|answer.jackxiang.com|scratch.jackxiang.com|api.itv.jackxiang.com|common.itv.jackxiang.com|api.itv.cctv.com|common.itv.cctv.com" ./  -A 7|grep root
./answer.jackxiang.com.conf-        root /data/www/api.jackxiang.com/;
./api.itv.jackxiang.com.conf:        root /data/www/api.itv.jackxiang.com/;
./vote.jackxiang.com.conf-        root /data/www/api.jackxiang.com/;
./scratch.jackxiang.com.conf-        root /data/www/api.jackxiang.com/;
./common.jackxiang.com.conf-        root /data/www/api.jackxiang.com/;

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3909/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2022-7-28 15:16
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]