首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex解析netstat中的PID

使用regex解析netstat中的PID
EN

Stack Overflow用户
提问于 2020-08-02 00:47:32
回答 3查看 233关注 0票数 0

我读过很多不同的人试图做类似的事情(使用sed/awk/grep之类的工具),我试着阅读docs来构建我自己的.但我没能做我认为相对容易的判断。

我正在解析一些netstat输出,并隔离PID。

我知道多个PID可以使用一个连接,但我也知道,我所隔离的特定类型的连接将是特定服务上的单个用户。

我正在编辑的数据的最小示例:

users:((sshd,pid=1762,fd=5))

我试图隔离:

pid=1762

我打算使用(作为一个例子):

echo "users:(("sshd",pid=1762,fd=5))"| sed "s/users:((//" | sed "s/))//"| cut -d "," -f2

这正是我想要的..。但我只知道这不是个好办法。有人能帮我一下吗?)

EN

回答 3

Stack Overflow用户

发布于 2020-08-02 01:16:47

Jetchisel's comment建议使用awk的字段分隔符选项:

echo 'users:((sshd,pid=1762,fd=5))' | sed 's/^.*sshd,//;s/,fd=.*$//'echo 'users:((sshd,pid=1762,fd=5))' | awk -F, '{print $2}'

这件事很好用。

票数 0
EN

Stack Overflow用户

发布于 2020-08-02 04:20:08

对于上面的任务,不需要运行单独的命令来提取pid组件。您可以使用bash内置对模式或regex的支持。优点是不需要运行单独的进程--如果要处理大量的输入行,则运行速度要快得多。

代码语言:javascript
复制
V='users:((sshd,pid=1762,fd=5))'

# Using Pattern
IFS=, read x1 x_pid x3 <<< "$V"
echo "$x_pid"

或使用REGEX

代码语言:javascript
复制
V='users:((sshd,pid=1762,fd=5))'

[[ "$V" =~ ,(pid=[0-9]+), ]] && x_pid=${BASH_REMATCH[1]}
echo "$x_pid"
票数 0
EN

Stack Overflow用户

发布于 2020-08-02 17:01:43

代码语言:javascript
复制
echo "users:((sshd,pid=1762,fd=5))" | cut -d',' -f2

echo "users:((sshd,pid=1762,fd=5))" | grep -o "pid=[0-9]*"

虽然我认为-o是一个GNU扩展,但后者似乎也能工作,因此它可能不是可移植的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63211361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档