读取时使用时出错;做grep

时间:2013-10-21 17:50:48

标签: bash while-loop grep cat

我正在使用此命令

cat text.csv | while read a ; do grep $a text1.csv >> text2.csv; done

text.csv具有完整路径的文件名。文件名有空格。

示例:C:\ Users \ Downloads \ File Name.txt

text1.csv包含显示用户ID和带完整路径的文件名的日志。

示例:MyName,C:\ Users \ Downloads \ File Name.txt

当我运行命令时,我得到错误

grep: Name: No such file or Directory

我知道错误是因为文件名中的空格。我想知道如何删除此错误。

2 个答案:

答案 0 :(得分:5)

将grep模式与双引号一起使用,否则shell会将其视为grep的不同参数:

while read a ; do grep "$a" text1.csv >> text2.csv; done < text.csv

不需要额外的cat因此我在答案中改变了它。

答案 1 :(得分:2)

引用变量:

cat text.csv | while read a ; do grep "$a" text1.csv >> text2.csv; done

通常,您通常应引用变量,除非您特别希望该值经历分词和通配符扩展。