從ps命令我希望在這種情況下有一些變量「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'
或相關的我不知道如何完成它。
從ps命令我希望在這種情況下有一些變量「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'
或相關的我不知道如何完成它。
ps -ef | perl -lne 'print $1 if /(\S* PS1 .*)/xi'
ps -ef | grep -i PS1| awk '{ for(i=9;i<=NF;++i)printf "%s ",$i }
ps -ef | grep -i PS1| grep -v grep| awk '{print $(NF-2)" "$(NF-1)" "$NF}'
您可以使用pgrep
簡化:
pgrep -fl PS1 | cut -d ' ' -f2-
可以使用自定義格式ps
輸出,你只需要什麼,所以你只需要篩選所需的命令在列表中:
ps e --format %a | grep PS1
甚至更好的使用pgrep
這是專門做這個,如果它的可用:
pgrep -fl PS1 | cut -f2- -d' '
您可以使用此,
ps -eo cmd | grep 'PS1'
有幾個選項。這些都解析你的命令。更好的方法是使用pgrep
或ps
的o
的選擇,但如果你真的想解析:
的grep本身
ps -ef | grep -Po 'PS1.*'
perl的
ps -ef | grep -i PS1 | perl -pe 's/.*(?=PS1)//'
sed的
ps -ef | sed 's/.*\(PS1.*\)/\1/'
ps -ef並不總是返回相同的結構(日期和時間取決於多長時間)。 PS1也可以在用戶名或進程參數中找到。 PS1可以從幾種方式/路徑開始)。我們可以爲這些情況假設什麼? – NeronLeVelu 2014-09-23 09:47:22