0

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パラメータ10を抽出するにはどうすればよいですか?qパラメータの後の番号が必要です

4

3 に答える 3

2
px aux | sed -n 's/.*-q\s\([0-9]\+\).*/\1/p'
于 2012-07-10T12:35:07.277 に答える
0

行が variable に格納されている場合$line:

val=$(
    this_token=false 
    for word in $line; do 
        $this_token && { echo $word; break; } 
        [[ $word = "-q" ]] && this_token=true 
    done
) 
echo $val  
于 2012-07-10T14:48:57.473 に答える
0

単純なソリューションの正規表現は.*-q ([^ ]*) .*. したがって、次のようなことsed 's/.*-q ([^ ]*) .*/\1/'がうまくいくはずです。

于 2012-07-10T12:24:59.947 に答える