有没有办法在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参数之后的数字
答案 0 :(得分:2)
px aux | sed -n 's/.*-q\s\([0-9]\+\).*/\1/p'
答案 1 :(得分:0)
天真的解决方案正则表达式为.*-q ([^ ]*) .*
。所以,sed 's/.*-q ([^ ]*) .*/\1/'
之类的东西应该可以解决问题。
答案 2 :(得分:0)
如果该行存储在变量$line
中:
val=$(
this_token=false
for word in $line; do
$this_token && { echo $word; break; }
[[ $word = "-q" ]] && this_token=true
done
)
echo $val