2012-07-10 16 views
0

是否有方法從bash中的正則表達式的文本行中提取特定部分。在bash中找到一行中的特定字符

例如

8495 pts/1 S 0:10 /opt/sbin/proc -q 10 -p /opt/etc/plugin/ -c /opt/etc/ -f 200000 -s 10000 -b 3276 

我怎樣才能提取q參數從上方?我需要q參數後的數字

+1

難道這鍵入的命令行?或者存儲在一個文件中? – 2012-07-10 12:26:39

+0

@spencer它是ps aux的輸出 – barp 2012-07-10 12:31:33

回答

2
px aux | sed -n 's/.*-q\s\([0-9]\+\).*/\1/p' 
0

天真的解決方案正則表達式將是.*-q ([^ ]*) .*。所以,像sed 's/.*-q ([^ ]*) .*/\1/'應該做的伎倆。

0

如果該行被存儲在變量$line

val=$(
    this_token=false 
    for word in $line; do 
     $this_token && { echo $word; break; } 
     [[ $word = "-q" ]] && this_token=true 
    done 
) 
echo $val 
相關問題