在Linux控制台中从输出中提取字符串
我一直在尝试在Linux中从输出中提取特定字符串 例如:在Linux控制台中从输出中提取字符串,linux,sed,awk,grep,tr,Linux,Sed,Awk,Grep,Tr,我一直在尝试在Linux中从输出中提取特定字符串 例如: ps -eo pid,args | grep PRD_ | egrep startscen.sh | more 给出以下输出 (全尺寸图像:) 我知道awk、sed、tr可以用来提取PID之类的细节,但我不知道如何编写查询来精确获取行的PID,其中第四列有一个特定字符串,如“PROCESS\u ALL\u BETS” 或者如何提取_NAME=之后的每个字符 Awk去救援 ps -eo pid,args | awk '/PRD_/ &a
ps -eo pid,args | grep PRD_ | egrep startscen.sh | more
给出以下输出
(全尺寸图像:)
我知道awk、sed、tr可以用来提取PID之类的细节,但我不知道如何编写查询来精确获取行的PID,其中第四列有一个特定字符串,如“PROCESS\u ALL\u BETS”
或者如何提取_NAME=之后的每个字符 Awk去救援
ps -eo pid,args | awk '/PRD_/ && /startscen\.sh/ && $4 ~ /PROCESS_ALLBETS/'
(在图中,您有PROCESS\u ALLBETS
,因此我猜这就是您真正想要的,即使您的文本中说PROCESS\u ALLBETS
)
这将选择打印符合以下所有条件的每一行:
——这行的某个地方有一个“PRD”。也许您可以将其压缩为类似于/PRD\u/
的值,以便只匹配第六个字段的开头$6~/^-NAME=PRD\uu/
——行中的某个地方与此正则表达式匹配。同样,为了提高精度,如果只需要精确匹配,您可能需要将其更改为/stratscen\.sh/
,甚至$3~/startsen\.sh/
$3==“startsen.sh”
——第四个字段与此正则表达式匹配$4~/PROCESS\u ALLBETS/
-SESSION\u NAME=
的第一个字段和第八个字段,请添加如下内容
{ n=$8; sub(/^-SESSION_NAME=/,"",n); print $1, n }
就在结束单引号之前。谢谢您的帮助
ps -eo pid,args | awk '/PRD_/ && /startscen\.sh/ && $4 ~ /PROCESS_ALLBETS/'
(在图中,您有PROCESS\u ALLBETS
,因此我猜这就是您真正想要的,即使您的文本中说PROCESS\u ALLBETS
)
这将选择打印符合以下所有条件的每一行:
——这行的某个地方有一个“PRD”。也许您可以将其压缩为类似于/PRD\u/
的值,以便只匹配第六个字段的开头$6~/^-NAME=PRD\uu/
——行中的某个地方与此正则表达式匹配。同样,为了提高精度,如果只需要精确匹配,您可能需要将其更改为/stratscen\.sh/
,甚至$3~/startsen\.sh/
$3==“startsen.sh”
——第四个字段与此正则表达式匹配$4~/PROCESS\u ALLBETS/
-SESSION\u NAME=
的第一个字段和第八个字段,请添加如下内容
{ n=$8; sub(/^-SESSION_NAME=/,"",n); print $1, n }
就在结束单引号之前。发布一个简短的文本片段会比截图更好,尤其是不在线的截图。发布一个简短的文本片段会比截图更好,尤其是不在线的截图。此外,我想列出所有的PID及其相应的脚本,例如462 DEQUEUE\u all\u EVENTS\u PLSQL您的需求不是很清楚。如果你能用更多的细节来澄清你的问题,请这样做。目前,最直接的怀疑是你想要的是
PROCESS\u ALLBETS
而不是PROCESS\u ALLBETS
。我附加了你的脚本ps-eo-pid,args | grep PRD | egrep startsen.sh | more | awk'/PRD/&&&/startsen\.sh/&$4~/PROCESS\u ALL\u-BETS/{n=$8;sub(/^-SESSION u-SESSION NAME=/,“”,n);print$1,n}“
但我没有看到输出。在我共享的屏幕截图中,我看到了列有不同进程的行,这些进程具有以下正则表达式“PRD_uu”和“/startsen.sh”-现在我需要一个脚本,在其中我传递一个字符串,如PRO'',获取与进程对应的行,所有这些进程的输出都是13561。另外,我想列出所有的PID及其相应的脚本,例如462 DEQUEUE\u all\u EVENTS\u PLSQL您的需求不是很清楚。如果你能用更多的细节来澄清你的问题,请这样做。目前,最直接的怀疑是你想要的是
PROCESS\u ALLBETS
而不是PROCESS\u ALLBETS
。我附加了你的脚本ps-eo-pid,args | grep PRD | egrep startsen.sh | more | awk'/PRD/&&&/startsen\.sh/&$4~/PROCESS\u ALL\u-BETS/{n=$8;sub(/^-SESSION u-SESSION NAME=/,“”,n);print$1,n}“
但我没有看到输出。在我共享的屏幕截图中,我看到了列有不同进程的行,这些进程具有以下正则表达式“PRD_uu”和“/startsen.sh”-现在我需要一个脚本,在其中我传递一个字符串,如PRO'',获取与进程对应的行,所有的输出都是13561。