2010-06-15 12 views
9

मुझे पर्यवेक्षक का स्टेटस आउटपुट मिला है, इस तरह दिख रहा है।बैश के साथ पार्स स्ट्रिंग और निकालने की संख्या

frontend       RUNNING pid 16652, uptime 2:11:17 
nginx       RUNNING pid 16651, uptime 2:11:17 
redis       RUNNING pid 16607, uptime 2:11:32 

मुझे nginx के पीआईडी ​​निकालने की आवश्यकता है। मैंने इसे grep -P कमांड के माध्यम से किया है, लेकिन रिमोट मशीन grep पर perl नियमित अभिव्यक्ति समर्थन के बिना बनाया गया है।

ऐसा लगता है कि sed या awk बिल्कुल मुझे चाहिए, लेकिन मैं उनसे परिचित नहीं हूं।

कृपया मुझे यह करने में मदद करें कि इसे कैसे करें, अग्रिम धन्यवाद। awk साथ

उत्तर

2
$ cat $your_output | sed -s 's/.*pid \([0-9]\+\),.*/\1/' 
16652 
16651 
16607 
+0

इसे यूयूओसी (बिल्ली का बेकार उपयोग) के रूप में जाना जाता है – mikerobi

+0

@ मिकरोबी: यह केवल उदाहरण था कि कमांड में सामान कैसे पाइप करें ... उसने यह नहीं कहा कि उसका आउटपुट कैसा था ... लेकिन जो कुछ भी । – Stephen

4

समाधान और

[email protected]:~$ cat test 
frontend       RUNNING pid 16652, uptime 2:11:17 
nginx       RUNNING pid 16651, uptime 2:11:17 
redis       RUNNING pid 16607, uptime 2:11:32 
[email protected]:~$ awk '{print $4}' test | cut -d, -f 1 
16652 
16651 
16607 

कटौती केवल nginx के लिए:

[email protected]:~$ grep nginx test | awk '{print $4}' | cut -d, -f 1 
16651 
+1

अल्पविराम की अंतिम सफाई के साथ किया जा सकता है: tr -d ',' – Marcin

+0

धन्यवाद, @Marcin –

+0

awk + cut + grep का उपयोग करने की कोई आवश्यकता नहीं है। बस काम करेंगे अजीब काम करेंगे। 'awk -F ","/nginx/{print $ 1}' फ़ाइल' – ghostdog74

4

अकेले AWK का उपयोग करना:

awk -F'[ ,]+' '{print $4}' inputfile 
+0

एक पाइप के साथ बढ़िया काम करता है: '$ status | grep nginx | ​​awk -F '[,] +' '{print $ 4}' -' – Keith

+2

@ केथ: 'grep' को' awk' में पाइप करना आवश्यक नहीं है। एडब्ल्यूके इसे सब कुछ कर सकता है: 'स्थिति | awk -F '[,] +' '/ nginx/{$ 4} प्रिंट करें' ' –

1

संभालने ग्रेप कार्यान्वयन -o विकल्प का समर्थन करता है, आप दो greps इस्तेमाल कर सकते हैं:

output \ 
    | grep -o '^nginx[[:space:]]\+[[:upper:]]\+[[:space:]]\+pid [0-9]\+' \ 
    | grep -o '[0-9]\+$' 
2

pgrep पर एक नजर डालें, ग्रेप का एक संस्करण विशेष रूप से प्रक्रिया tabless grepping के लिए अनुरूप।

संबंधित मुद्दे