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