Luk*_*404 7 bash scripting grep
我需要egrep一个在运行时之前未知的字符串,我将通过shell变量获取(shell是bash,如果这很重要).问题是,该字符串将包含特殊字符,如大括号,空格,点,斜线等.
如果我知道字符串,我可以一次一个地逃避特殊字符,但是我怎么能为整个字符串做到这一点?
通过sed脚本运行字符串为每个特殊字符添加前缀可能是一个想法,我仍然需要rtfm应该如何编写这样的脚本.我不知道是否有其他更好的选择.
我确实阅读了,re_format(7)但似乎没有像"将整个下一个字符串视为文字"这样的事情......
编辑:为了避免误报,我还应该为模式添加换行检测,例如. egrep '^myunknownstring'
如果你需要将字符串嵌入到更大的表达式中,sed我就是这样做的.
s_esc="$(echo "$s" | sed 's/[^-A-Za-z0-9_]/\\&/g')" # backslash special characters
inv_ent="$(egrep "^item [0-9]+ desc $s_esc loc .+$" inventory_list)"
Run Code Online (Sandbox Code Playgroud)