[实践OK]Linux下用Grep -E参数实现$grep -E ^[a-Z] supervisord.conf显示非注释项,ABC def abc,加上正则表达式实现,多个函数查找的方法,及实现查看所查找单词的前三行后两行的环绕搜索,grep一个多行单独IP间隔包含文字里的IP列表出来,grep查找时显示找到那行的后面N行-A,和前面N行参数-B的实际应用。
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参数,加上正则表达式实现,多个函数查找,如下:
配上shell 文件 findfunPath.sh如下:
简单示例:
二)查看所查找单词的前三行后两行的环绕搜索:
[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/;
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}'
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
评论列表