gpt4 book ai didi

正则表达式试图在反斜杠/不工作之前匹配所有内容

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:15 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式来匹配/之前的所有内容,但是当我尝试以下操作时,我没有得到任何输出。我仔细检查了我的正则表达式,看起来没问题,但不确定为什么它不起作用..

[user@user my_dir]$ tar -tf abc_de123_01.02.03.4.tgz | grep -m1 /
abc_de123_01.02.03.4/abcde.ini
[user@user my_dir]$ tar -tf abc_de123_01.02.03.4.tgz | grep -m1 .*\/
[user@user my_dir]$ tar -tf abc_de123_01.02.03.4.tgz | grep -m1 /$

expected output:
abc_de123_01.02.03.4/

最佳答案

这里存在三个问题。

  • 一个问题是 * 对您的 shell 有特殊意义;如果您运行 echo grep -m1 .*\/,您会看到您的 shell 正在以您意想不到的方式扩展 .*\/

  • 一个问题是 grep 默认打印匹配的。如果您希望它只打印一行的匹配 部分,您需要 -o 标志。

  • 一个问题实际上并没有破坏您的命令,但您仍然应该解决这个问题,那就是您的 shell 使用 \ 作为引号(转义)字符,所以 \/ 实际上只是 / 的意思。 (这不会破坏任何东西的原因是 / 对 grep 来说并不是特别的,所以你实际上不需要 \ 来做任何事情。)

所以:

grep -m1 -o '.*/'

找到包含 / 的第一行,并打印该行最后一个 / 之前的所有内容。

顺便说一句,/ 不是反斜杠,而只是一个斜杠(有时正斜杠)。 反斜杠\

关于正则表达式试图在反斜杠/不工作之前匹配所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37151024/

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