我正在使用此命令
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
我知道错误是因为文件名中的空格。我想知道如何删除此错误。
答案 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
通常,您通常应引用变量,除非您特别希望该值经历分词和通配符扩展。