gpt4 book ai didi

linux - 从 Linux 控制台的输出中提取字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:36 27 4
gpt4 key购买 nike

我一直在尝试从 Linux 的输出中提取特定的字符串

例如:

ps -eo pid,args | grep PRD_ | egrep startscen.sh | more

给出以下输出

http://i.imgur.com/reS7wZ1.png

(全尺寸图片:http://i.imgur.com/reS7wZ1.png)

我知道 awk、sed、tr 可用于提取 PID 等详细信息,但我不确定如何编写查询以准确获取第四列具有特定字符串(如“PROCESS_ALL_BETS”)的行的 pid

或者我如何提取 _NAME= 之后的每个字符?

最佳答案

Awk 助你一臂之力。

ps -eo pid,args | awk '/PRD_/ && /startscen\.sh/ && $4 ~ /PROCESS_ALLBETS/'

(在图片中,您有 PROCESS_ALLBETS,所以我猜这就是您真正想要的,即使您的文本显示为 PROCESS_ALL_BETS。)

这会选择打印符合以下所有条件的每一行:

  • /PRD_/ -- 该行某处有一个“PRD_”。也许你会把它收紧到像 $6 ~/^-NAME=PRD_/ 这样的东西,只匹配第六个字段的开头。
  • /stratscen\.sh/ -- 该正则表达式在线某处匹配。同样,为了提高精度,您可能希望将其更改为 $3 ~/startscen\.sh/ 甚至 $3 == "startscen.sh" 如果您只想要精确匹配。
  • $4 ~/PROCESS_ALLBETS/ -- 第四个字段匹配这个正则表达式。

以上将简单地打印所有匹配的行。要仅打印第一个字段和八个字段并删除前缀 -SESSION_NAME=,请添加如下内容

{ n=$8; sub(/^-SESSION_NAME=/,"",n); print $1, n }

就在结束单引号之前。

关于linux - 从 Linux 控制台的输出中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com