当前位置: 首页 > news >正文

【正则表达式初探】grep 命令避免匹配自身

【正则表达式初探】grep 命令避免匹配自身

最近遇到了一个问题,即使用grep命令获取xxx进程的pid时,同时返回了xxx进程的pid和grep xxx进程的pid,原因是grep xxx也会作为一个进程运行,对xxx的查找包含了grep xxx.(不要问我为什么不用pgrep或者grep -w,问就是没有。

实际中使用的命令如下:

ps | grep init | awk {'if($1 \!\= 1)print $1'}

解决方法可以使用正则表达式,及使用'[]'对进程名进行修饰,修改如下:

ps | grep '[i]nit' | awk {'if($1 \!\= 1)print $1'}

其中[i]表示匹配i字符,[i]nit匹配上init,而grep init命令从字符上就成了grep '[i]nit',因此对init的匹配就不会匹配到grep init命令了。

附一个杀进程的c语言程序

char command[50];
FILE *fp;
const char *process_names[2] = {"[i]nit", "[h]ello"};
sprintf(command, "ps | grep '%s'| awk {'if($1 != 1)print $1'}", process_names[0]); 
fp = popen(command, "r");
if (fp == NULL)
{perror("Error opening pipe");
}
pid_t pid;
fscanf(fp, "%d", &pid);
pclose(fp);
if (pid > 0)
{if (kill(pid, SIGTERM) == 0){printf("PID %d (%s) is killed!\n", pid, process_names[0]);}else{perror("Error kill!");}
}
http://www.wxhsa.cn/company.asp?id=2278

相关文章:

  • 测试工程师的核心竞争力是什么?绝不是点点点
  • 关于 ECT-OS-JiuHuaShan 框架的终极阐释
  • 向“光”而行 | 相聚2025 ASML中国日,携手奔赴“芯”辰大海
  • JavaDay3
  • U3D动作游戏开发读书笔记--2.2 编辑器本身的基础知识
  • 20250904
  • 临时代码存储
  • 域环境服务器搭建
  • 25fall 做题记录 - Amy
  • 决策单调性优化 dp
  • 地平线与哈啰合作 加速L4自动驾驶研发
  • langChain、LangGraph、autoGen、CrewAI、dify、cozeLLM开发工具
  • 华为智驾赋能「小Q7」,一汽奥迪Q6L e-tron刷新豪华纯电SUV认知
  • 菱形图形输出
  • LeetCode 2958.最多K个重复元素的最长子数组 - 教程
  • 9-12
  • 全球首款 HBM4 芯片,开始量产!
  • Python Flask框架学习总结(一)
  • 20250909
  • 9.11日总结
  • [充电管理] 充电管理基本概念 - 充电类型
  • Spring AI vs LangChain4j
  • P7913 [CSP-S 2021] 廊桥分配
  • 函数计算进化之路与 AI Sandbox 新基座
  • iPhone 17核心名单揭晓,92家中国公司占半壁江山!
  • 202009_风二西_蓝牙协议流量
  • AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性
  • 2025权威榜单之公众号排版Top5(含效率对比与适用建议)
  • 4
  • 02020305 .NET Core核心基础组件05-开发自己的配置提供者(本课没听懂,后续再补)