在bash命令行中使用Echo Regex匹配组

时间:2016-09-01 15:47:51

标签: regex bash terminal

如何从终端命令行打印正则表达式匹配组值?

我正在尝试使用

回显正在运行的端口的进程ID
lsof -n -i4TCP:$PORT | grep LISTEN

但这会输出一系列详细信息

node    1234 myname   12u  IPv6 0xf1c950b487699d0      0t0  TCP *:irdmi (LISTEN)

我需要单独回显1234,以便我可以使用kill命令终止该PID。

我使用了grep -E,但我无法打印捕获组。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用awk:

lsof -n -i4TCP:$PORT | awk '/LISTEN/{print $2}'

/LISTEN/会在行中有LISTEN时执行此操作,而$2将是输入中的第二个字段,即您的进程ID。