我开始编码bash并不是最好的,但我有一个情况。我的输出如下:
Configuration file 'hello2.conf' is in use by process 735.
Ending
我想提取进程ID 735
。
我看到答案只是从输出中提取数字但是我留下了2735
?
如何从输出中提取735
?我正在考虑搜索process
然后抓住号码?
谢谢!
答案 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
转义序列代表
答案 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@"