我试图在 bash 脚本中以逗号分隔的单词列表中找到完全匹配。
我尝试过使用带有各种标志的 grep,例如 grep -w,但它不起作用。
我有这个:
haystack="foo 1,bar"
needle="foo"
if [[ $( echo $haystack | grep $needle ) ]]; then
echo exists
else
echo does not exist
fi
在上面的例子中,“foo 1”不能匹配。现在会发生什么,它是否找到了匹配项,但我不希望那样。
最佳答案
您可以使用 Bash 正则表达式匹配 (,|^)foo(,|$)
模式:
haystack="foo 1,bar"
needle='(,|^)foo(,|$)'
if [[ "$haystack" =~ $needle ]]; then
echo 'exists'
else
echo 'does not exist'
fi
参见 online demo
正则表达式匹配
(,|^)
-,
或字符串开头foo
- 一些foo
字符序列(,|$)
-,
或字符串结尾。
关于linux - 在 bash 中匹配逗号分隔列表中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557032/