我有主管的状态输出,看起来像这样.
frontend RUNNING pid 16652, uptime 2:11:17
nginx RUNNING pid 16651, uptime 2:11:17
redis RUNNING pid 16607, uptime 2:11:32
Run Code Online (Sandbox Code Playgroud)
我需要提取nginx的PID.我已经通过grep -P命令完成了它,但是在远程机器上grep是在没有perl正则表达式支持的情况下构建的.
看起来sed或awk正是我需要的,但我不熟悉它们.
请提前帮助我找一个怎么做的方法.
我在Ubuntu 12.04上运行这个替换命令.
$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"
Run Code Online (Sandbox Code Playgroud)
但是,会引发以下错误.
sed:-e expression#1,char 27:无效的范围结束
我记得同样的表达式适用于MacOSX.
你能描述命令失败的原因吗?
在我开始之前,我已经看过这个问题,但似乎解决方案是他们没有转义正则表达式中的括号。我遇到了同样的错误,但我没有对正则表达式进行分组。我想要做的是在 lastlog 文件中找到所有名称/用户名并仅返回 UN。
我拥有的:
s/^[a-z]+ |^[a-z]+[0-9]+/\1/p
Run Code Online (Sandbox Code Playgroud)
我已经看到许多解决方案展示了如何在 awk 中执行此操作,这对于将来参考非常有用,但我想使用 sed 来执行此操作。
编辑例如输入:
dzhu pts/15 n0000d174.cs.uts Wed Feb 17 08:31:22 -0600 2016
krobbins **Never logged in**
js24 **Never logged in**
Run Code Online (Sandbox Code Playgroud)