gpt4 book ai didi

regex - 将输出与正则表达式进行比较时,如何在 bash 中保留换行符?

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

如果我有以下代码:

if [[ "$(cat myfile)" =~ ^scripts\/.* ]]; then
echo YES
else
echo NO
fi

“我的文件”包含以下内容:

hot/warm
scripts/whatever
cold/cool

我运行代码时的结果是“否”,但我希望它是"is"。

如果我通过重新排序内容来更改“myfile”,以便“scripts/whatever”排在第一位,如下所示:

scripts/whatever
hot/warm
cold/cool

那么当我运行我的脚本时,结果确实是 YES。这是有问题的,因为我希望我的脚本检测该正则表达式模式是否出现在内容的任何行上,而不仅仅是第一行。

最佳答案

您的情况:

[[ "$(cat myfile)" =~ ^scripts\/.* ]]; 

正在检查完整文件数据(您使用 cat myfile 命令提取)的正则表达式,因此它只会匹配以 scripts/ 开头的文件内容。

它不是匹配每一行的开头。

为此,您可以将 grep 与您的 git diff 命令一起使用(参见下面的评论):

if git diff | grep -q '^scripts/'; then
echo 'YES'
else
echo 'NO'
fi

关于regex - 将输出与正则表达式进行比较时,如何在 bash 中保留换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080986/

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