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:
(no
regex
)就足以告诉您它是否存在于
$PATH

cat ":$PATH:" | grep ":$TARGET_PATH:"

正则表达式很酷,但在这种情况下,您根本不需要它们

只需将正在搜索的字符串(
$PATH
)包装成一对分隔符(
)。这样,您就可以确定您要搜索的字符串(如果它出现在
$PATH
中)始终由
字符限定

定期搜索字符串
:$TARGET\u PATH:
(no
regex
)就足以告诉您它是否存在于
$PATH

cat ":$PATH:" | grep ":$TARGET_PATH:"

谢谢你,沃克。看起来您使用了正则表达式的扩展名-E。这是否意味着我们不能在正则表达式中使用“^”或“$in[”?我只是想检查一下。再次感谢您。@mora您可以(取决于您的bash和grep版本),但您需要避开替代选项
()
\(:|^\)
如果不使用
-E
。注意:如果要grep此环境变量后面的实际值,请不要退出
目标路径前面的
\$
。谢谢。看起来您使用了正则表达式的扩展名-E。这是否意味着我们不能在正则表达式中使用“^”或“$in[”?我只是想检查一下。再次感谢您。@mora您可以(取决于您的bash和grep版本),但您需要避开替代选项
()
\(:|^\)
如果不使用
-E
。注意:如果要grep此环境变量后面的实际值,请不要转义
目标路径前面的
\$
。当它不是范围中的第一个字符时,
^
保留其文字值<代码>$
在字符范围内没有任何特殊含义。与
|
相同。当它不是范围中的第一个字符时,
^
保留其文字值<代码>$
在字符范围内没有任何特殊含义。
|
也一样。谢谢你给我的!啊哈!解决方案。谢谢你给我!啊哈!解决方案