grep搜索所有空白区域零次或多次



当我试图在代码中找到警告或错误的来源时,编译器的输出通常是经过预处理的,因此空白不再与原始代码中的空白相同。

有什么好方法可以用这样的空白来转换grep模式:

grep 'data.frame(foo = x)' mycode

grep 'data.frame(foo *= *x)' mycode


一种可能性,我觉得有点难看:

PATTERN=`sed 's/ / */g' <(echo "test pattern") ` && grep $PATTERN mycode

代替:

grep 'data.frame(foo = x)' mycode

用途:

mygrep  'data.frame(foo = x)' mycode

其中mygrep是一个文件,具有可执行位集,包含:

#!/bin/bash
declare -a options
for arg in "$@"
do
case "$arg" in
-*) options+=("$arg") ; shift ;;
*) break ;;
esac
done
grep "${options[@]}" "$(sed 's/ / */g' <(echo "$1"))" "$2"

所有的丑陋都藏在文件里。论点是一样的。(限制:对于选项及其参数由空格分隔的特殊情况,我还没有添加处理带有参数的选项的功能。)

怎么样

PATTERN=$(sed -r 's/s+/\s+/g' <<<"$PATTERN")

然后使用CCD_ 3以允许对空白使用扩展正则表达式特征CCD_。

或者一步到位:

egrep "$(sed -r 's/s+/\s+/g' <<<"$PATTERN")" mycode

相关内容

  • 没有找到相关文章

最新更新