然后从那里找到字符串拉数字

时间:2017-03-13 12:08:08

标签: bash

我开始编码bash并不是最好的,但我有一个情况。我的输出如下:

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

我想提取进程ID 735。 我看到答案只是从输出中提取数字但是我留下了2735

如何从输出中提取735?我正在考虑搜索process然后抓住号码?

谢谢!

4 个答案:

答案 0 :(得分:3)

使用GNU grep功能启用-P标记,并使用-o标记打印匹配的条目。

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

在命令行中将其用作

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

\K转义序列代表

  

\ K:Perl Compatible Regular Expression

This sequence resets the starting point of the reported match. Any previously matched characters are not included in the final matched sequence.

答案 1 :(得分:1)

您可能想要使用正则表达式:

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

这应匹配行尾的任何数字,选择数字部分,然后打印出来!

祝你好运!

答案 2 :(得分:0)

如果您的行保持不变,请使用cut -d" " -f 9

答案 3 :(得分:0)

sed只能提取邮件特定位置的数字(使用\(...\)匹配分组和\1替换)。

... | sed "s@^Configuration file '.*' is in use by process \([0-9]*\)\.@\1@"