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'
行が variable に格納されている場合$line
:
val=$(
this_token=false
for word in $line; do
$this_token && { echo $word; break; }
[[ $word = "-q" ]] && this_token=true
done
)
echo $val
単純なソリューションの正規表現は.*-q ([^ ]*) .*
. したがって、次のようなことsed 's/.*-q ([^ ]*) .*/\1/'
がうまくいくはずです。