从输出到定义的var删除所有内容

时间:2014-09-23 08:08:43

标签: bash perl awk sed grep

从ps命令我希望在那种情况下定义一些var“PS1”,之后一切都要删除var。

例如:

ps -ef | grep -i PS1
cbsuser 1138700       1   0   Sep 15      -  0:10 ./PS1 PS01 3

预期产出:

./PS1 PS01 3

在我看来,这是错误的:

sed 's/^$/ "PS1"/g'

或相关我不知道如何完成它。

7 个答案:

答案 0 :(得分:3)

ps -ef | perl -lne 'print $1 if /(\S* PS1 .*)/xi'

答案 1 :(得分:2)

您可以使用ps的自定义格式仅输出您需要的内容,因此您只需要在列表中筛选所需的命令:

ps e --format %a | grep PS1

或者甚至更好地使用旨在执行此操作的pgrep

pgrep -fl PS1 | cut -f2- -d' '

答案 2 :(得分:2)

一些选择。这些都解析了你的命令。更好的方法是对pgrep使用ops选项,但如果您真的想要解析:

  1. grep本身

    ps -ef | grep -Po 'PS1.*'
    
  2. perl的

    ps -ef | grep -i PS1 | perl -pe 's/.*(?=PS1)//' 
    
  3. SED

    ps -ef | sed 's/.*\(PS1.*\)/\1/' 
    

答案 3 :(得分:1)

ps -ef | grep -i PS1| awk '{ for(i=9;i<=NF;++i)printf "%s ",$i }

答案 4 :(得分:1)

你可以使用它,

ps -eo cmd | grep 'PS1'

答案 5 :(得分:0)

ps -ef | grep -i PS1| grep -v grep| awk '{print $(NF-2)" "$(NF-1)" "$NF}'

答案 6 :(得分:0)

使用pgrep

可以简化
 pgrep -fl PS1 | cut -d ' ' -f2-