我正在编写一个脚本来帮助我处理日志文件。在其中,我将我的 grep 标志存储在一个变量中。标志和字符串本身工作得很好,但是当我使用变量将它们传递给 grep 时,使用转义字符的字符串部分不会产生任何匹配。见下文:
grepvars="-B4 -Psihe 'caused\sby|unable|fault|error|deadlock|checkpoint|corrupt|fail|exception|fatal|severe|\tat\s'"
grep -B4 -Psihe 'caused\sby|unable|fault|error|deadlock|checkpoint|corrupt|fail|exception|fatal|severe|\tat\s' adapter_15.log > adapter_15-error1.log
grep $grepvars adapter_15.log > adapter_15-error2.log
wc -l *-error?.log
51398 adapter_15-error1.log
25032 adapter_15-error2.log
如您所见,\tat\s 部分在通过变量传递给 grep 时不会产生匹配项。应该匹配的是(文字标签)在(文字空间)。虽然这在不使用变量的情况下可以正常工作,但我宁愿使用一个,因为它使我的多个 grep 调用更易于管理。我必须做些什么才能确保 grep 在通过变量时正确执行此匹配?