gpt4 book ai didi

bash - awk 中的基本名称或结尾?

转载 作者:行者123 更新时间:2023-11-29 09:16:02 25 4
gpt4 key购买 nike

我正在使用 awk 按名称获取特定进程的 pid

#!/bin/sh

for pid in $(ps | awk '$4 == "foo" { print $1 }')
do
i=1
echo "killing foo at pid $pid"
kill $pid && echo 'ok' || echo 'failed'
done

OSX 上的 ps 输出类似于:

$ ps
PID TTY TIME CMD
1858 ttys000 0:00.15 -bash
4148 ttys000 0:01.37 /a/b/c/foo

但我的 shell 脚本只有在 CMD 列中的进程恰好是 foo(没有绝对路径)时才有效。

我想我可以使用 basename,但如何从 awk 中调用它?

awk 中有类似$4.endswith('foo') 的东西吗?

最佳答案

awk 可以使用正则表达式。因此,除了 $4 == "foo",您还可以这样做:

awk '$4 ~ /\/foo$/ { print $1 }'

正则表达式在//之间。 \/foo$ 表示“反斜杠后跟 foo,然后是字段的结尾。”在这种情况下,您的字段是 /a/b/c/foo,因此它会匹配。

关于bash - awk 中的基本名称或结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9424888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com