regex 使用grep递归查找文件中的所有字符串(带%)

noj0wjuj  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(152)

要在所有文件中递归查找printf的所有匹配项,请执行以下操作:

grep -rnw ~/bin/ -e "printf"

但是,如何摆脱搜索模式printf '%0
我在下面的试验中失败了,无法逃脱百分比符号:

grep -rnw ~/bin/ -e "printf '%0"

grep -rnw ~/bin/ -e "printf \'\%0"

grep -rnw ~/bin/ -e "printf \'%%0"

样本文件:

#!/bin/sh

printf '%04d' "$var"
a14dhokn

a14dhokn1#

它不起作用,因为您使用了-w选项,该选项仅匹配整个单词。在您的文件中,%0是单词%04d的开头。由于%0之后没有单词边界,因此它不匹配。
去掉-w选项,它将匹配。

fprintf '%04d' "$var"

由于您希望匹配printf之前的字边界,因此使用\b字边界模式。

grep -rn ~/bin/ -e "\\bprintf '%0"

相关问题