我怎样才能让 grep 显示一行忽略我想要的词?

How can i make grep show a line ignoring the words i want?

我正在尝试将 grep 与 pwd 命令一起使用。

所以,如果我输入 pwd,它会显示如下内容:

/home/hrq/my-project/

但是,为了我正在制作的脚本,我需要将它与 grep 一起使用,所以它只打印 hrq/ 之后的内容,所以我需要始终隐藏我的主文件夹(/home/hrq/) 摘录,并仅显示后续内容(例如,在本例中,仅显示 my-project)。

可能吗?

我试过

pwd | grep -ov 'home',因为我看到“-v”标志将等同于 NOT 运算符,并将它与“-o”唯一匹配标志结合起来。但是没用。

使用grep -Po 'hrq/\K.*',例如:

grep -Po 'hrq/\K.*' <<< '/home/hrq/my-project/'
my-project/

此处,grep使用以下选项:
-P : 使用 Perl 正则表达式。
-o :仅打印匹配项(每行 1 个匹配项),而不是整行。

\K :使正则表达式引擎“保留”它在 \K 之前匹配的所有内容,而不将其包含在匹配中。具体来说,打印匹配项时忽略正则表达式的前面部分。

另请参见:
grep manual
perlre - Perl regular expressions

鉴于:

$ pwd
/home/foo/tmp

$ echo "$PWD"
/home/foo/tmp

根据您真正想做的事情,这些中的任何一个可能是您真正应该使用的,而不是尝试使用 grep:

$ basename "$PWD"
tmp

$ echo "${PWD#/home/foo/}"
tmp