2017-03-13 18 views
1

イムはbashをコーディングする開始しないことが最善ではプルが、私は状況があります。私は、プロセスID 735を抽出したい検索文字列が数字

Configuration file 'hello2.conf' is in use by process 735. 
Ending 

:私のような出力を持っています。 私は答えが出力からだけ数字を抽出することでしたが、それから私は2735と残っていますか?

にはどうすれば出力から735を抽出して行くことができますか?私はprocessの検索を考えていたのだろうか?

ありがとうございます!

答えて

3

使用GNU grepThis sequence resets the starting point of the reported match. Any previously matched characters are not included in the final matched sequence.

RegEx Demo

grep -Po 'process \K[0-9]+' <<<"Configuration file 'hello2.conf' is in use by process 735." 
735 

\KエスケープシーケンスがK \

の略

.. | grep -Po 'process \K[0-9]+' 

として、コマンドラインでそれを使用します

+1

きちんと説明して、私は多くを学んだ:)ありがとう! – irishwill200

+0

どうすればこのように実行できますか?それは次のようになります。 '出力= "noip2 -C | grepを-Po 'プロセス\ K [0-9] +'" evalのirishwill200 @ $ output' – irishwill200

+0

:ただやる、'出力= $(noip2 -C | grepを - Po 'process \ K [0-9] +') 'と出力して、' echo "$ output" ' – Inian

0

もしラインが同じままである場合、cut -d" " -f 9

+0

これが含まれるであろう「」最後の要素が数字であることを保証していません... – jraynal

1

あなたは正規表現を使用する場合があります

[[ "$line" =~ ([0-9]+)\.$ ]] && echo "${BASH_REMATCH[1]}" 

これは、行の末尾に任意の数と一致する番号部分を選択し、それを印刷してください!

Good Luck!