0

例如,假设我有要搜索的字符串列表:

alfa bravo charlie delta nebuchadnezzar bartholomew

在我的仓库中,有包含alfa、和的文件bravo,但没有包含的文件,也没有包含. 然后我希望答案是:charliedeltanebuchadnezzarbartholomew

nebuchadnezzar bartholomew

正如您可能猜到的那样,我正在寻找不推荐使用的东西。我最终使用了以下 Ruby 代码解决方法,因为我在尝试后无法找到解决方案man rg

%w[alfa bravo charlie delta nebuchadnezzar bartholomew].each do |word|
  command = 'rg ' + word
  if `#{command}` == ''  # execute the command, see if ripgrep found nothing
    puts word
  end
end
4

1 回答 1

2

您可以使用rg在简单的 shell 循环构造中找不到匹配项时的退出代码。从docs看来,当没有找到正则表达式的匹配项并且没有看到错误时,它似乎返回了一个代码 1。采用它

for word in alfa bravo charlie delta nebuchadnezzar bartholomew; do
    rg "$word" >/dev/null 2>&1
    [ "$?" -eq 1 ] && printf '%s\n' "no match for $word"
done
于 2021-02-02T19:24:43.483 回答