Bash “如何编写行首正则表达式”^&引用;,和行尾“$&引用;在[]中?
我试图在Bash “如何编写行首正则表达式”^&引用;,和行尾“$&引用;在[]中?,bash,Bash,我试图在$path中选择一条路径,目标路径。为了挑出来,我做了 grep -q "[:|^]$TARGET_PATH[$|:]" 但是,它不起作用 恐怕行首“^”和行尾“$”可能在[]中不起作用 请告诉解决方案。您可以尝试代替[]() 您可以尝试代替[]() 此检查不需要grep。您可以在BASH本身中执行此操作: [[ $PATH =~ (^|:)"$TARGET_PATH"(:|$) ]] && echo "found" | echo " not found" 此检查不需
$path
中选择一条路径,目标路径
。为了挑出来,我做了
grep -q "[:|^]$TARGET_PATH[$|:]"
但是,它不起作用
恐怕行首“^
”和行尾“$
”可能在[]
中不起作用
请告诉解决方案。您可以尝试代替[]
()
您可以尝试代替[]
()
此检查不需要
grep
。您可以在BASH本身中执行此操作:
[[ $PATH =~ (^|:)"$TARGET_PATH"(:|$) ]] && echo "found" | echo " not found"
此检查不需要
grep
。您可以在BASH本身中执行此操作:
[[ $PATH =~ (^|:)"$TARGET_PATH"(:|$) ]] && echo "found" | echo " not found"
正则表达式很酷,但在这种情况下,您根本不需要它们 只需将正在搜索的字符串(
$PATH
)包装成一对分隔符(:
)。这样,您就可以确定您要搜索的字符串(如果它出现在$PATH
中)始终由:
字符限定
定期搜索字符串:$TARGET\u PATH:
(noregex
)就足以告诉您它是否存在于$PATH
:
cat ":$PATH:" | grep ":$TARGET_PATH:"
正则表达式很酷,但在这种情况下,您根本不需要它们 只需将正在搜索的字符串(
$PATH
)包装成一对分隔符(:
)。这样,您就可以确定您要搜索的字符串(如果它出现在$PATH
中)始终由:
字符限定
定期搜索字符串:$TARGET\u PATH:
(noregex
)就足以告诉您它是否存在于$PATH
:
cat ":$PATH:" | grep ":$TARGET_PATH:"
谢谢你,沃克。看起来您使用了正则表达式的扩展名-E。这是否意味着我们不能在正则表达式中使用“^”或“$in[”?我只是想检查一下。再次感谢您。@mora您可以(取决于您的bash和grep版本),但您需要避开替代选项
()
:\(:|^\)
如果不使用-E
。注意:如果要grep此环境变量后面的实际值,请不要退出目标路径前面的\$
。谢谢。看起来您使用了正则表达式的扩展名-E。这是否意味着我们不能在正则表达式中使用“^”或“$in[”?我只是想检查一下。再次感谢您。@mora您可以(取决于您的bash和grep版本),但您需要避开替代选项()
:\(:|^\)
如果不使用-E
。注意:如果要grep此环境变量后面的实际值,请不要转义目标路径前面的\$
。当它不是范围中的第一个字符时,^
保留其文字值<代码>$
在字符范围内没有任何特殊含义。与|
相同。当它不是范围中的第一个字符时,^
保留其文字值<代码>$
在字符范围内没有任何特殊含义。|
也一样。谢谢你给我的!啊哈!解决方案。谢谢你给我!啊哈!解决方案