【问题标题】:Echo Regex match group in bash command line在 bash 命令行中回显正则表达式匹配组
【发布时间】:2016-09-01 15:47:51
【问题描述】:

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

我正在尝试使用

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

但是这会输出成这样的一串细节

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

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

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

【问题讨论】:

    标签: regex bash terminal


    【解决方案1】:

    您可以为此使用 awk:

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

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

    【讨论】:

    • 谢谢!这有帮助。但我无法通过管道传递kill。你觉得有什么理由吗?尝试做lsof -n -i4TCP:$PORT | awk '/LISTEN/{print $2}' | kill -9
    • 使用:lsof -n -i4TCP:$PORT | awk '/LISTEN/{print $2}' | xargs kill -9
    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多