gpt4 book ai didi

regex - 将正则表达式从 bash 转换为 zsh

转载 作者:行者123 更新时间:2023-12-05 00:58:13 29 4
gpt4 key购买 nike

我最近将 macOS 更新为新的 Catalina 版本,并按照建议从 bash 切换到 zsh。问题是在我的工作流程中,我们做了一些需要正则表达式的文件操作,我不知道如何让它与 zsh 一起工作。

这是我的两个正则表达式:

ls | grep ^[0-9].*.chunk.js$
ls | grep ^main.*.chunk.js$

它们应该匹配以下文件:main.d9a85e98.chunk.js2.c2cbac0f.chunk.js

有什么想法或资源吗?

谢谢!

最佳答案

引用正则表达式以防止在 grep 看到之前尝试对字符串进行 shell 扩展。

# Ignoring the issue of parsing the output of ls
ls | grep '^[0-9].*.chunk.js$'
ls | grep '^main.*.chunk.js$'

正则表达式通常可以解释为 shell 模式,bashzsh 都会在运行命令之前尝试对其进行扩展。两种 shell 都可以选择将不匹配的模式视为错误或文字字符串。默认情况下,bash 将其视为文字字符串,而 zsh 将其视为错误。在任一 shell 中做的“正确”事情是引用一个字符串,您绝对不打算将其扩展为模式。 bash 只是让你更频繁地摆脱它。

bash 中,这由 failglob 选项控制,默认关闭。

zsh中,由NOMATCH选项控制,默认开启。

zsh 还具有更丰富的模式语言,因此在 bash 中可能不会导致模式匹配的字符串可能会在 zsh 中匹配>。结果是一样的:grep 看不到你想要的参数。

关于regex - 将正则表达式从 bash 转换为 zsh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453904/

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