如何grep在给定文件列表中包含空格的字符串?

时间:2015-07-30 12:16:11

标签: bash unix grep xargs

如果搜索字符串有空格,则将其视为2个单独的字符串,而不仅仅是一个字符串。如何将搜索字符串视为单个值?使用xargs将需要搜索的文件传递给grep可以正常工作。

这是findInFiles.sh脚本

SEARCH_STR=$1
SEARCH_FILES=$2
# This line return results with search for individual strings
cat $SEARCH_FILES | xargs grep $SEARCH_STR
# This line return no results, while it works fine on command line
cat $SEARCH_FILES | xargs grep "$SEARCH_STR"

这是脚本的执行方式

./findInFiles.sh "go green" /tmp/search_files.out

/tmp/search_files.out has:
    src/file1.py
    src/file2.py
    src/file3.py

再次'cat $ SEARCH_FILES |脚本中的xargs grep $ SEARCH_STR'将“go green”解释为2个单独的单词,而'cat $ SEARCH_FILES | xargs grep“$ SEARCH_STR”'在命令行上运行,但不在脚本中,但不产生任何结果。

已解决:该脚本实际上与'cat $ SEARCH_FILES |一起使用xargs grep“$ SEARCH_STR”'。我一直在用错误的输入来尝试它。遗憾!

1 个答案:

答案 0 :(得分:-1)

try like
SEARCH_STR="$1"
SEARCH_FILES=$2
# This line return results with search for individual strings
cat $SEARCH_FILES | grep "$SEARCH_STR"