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

天真的解决方案正则表达式是.*-q ([^ ]*) .*. 所以,类似的东西sed 's/.*-q ([^ ]*) .*/\1/'应该可以解决问题。

于 2012-07-10T12:24:59.947 回答
0

如果该行存储在变量中$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 回答