سؤال

I am using this command

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

text.csv has file names with full path. The file names are having spaces.

Example: C:\Users\Downloads\File Name.txt

text1.csv contains logs showing user id and the file name with full path.

Example: MyName,C:\Users\Downloads\File Name.txt

When I run the command, I get and error

grep: Name: No such file or Directory

I know that the error is because of the spaces in the file name. I would like to know how can I remove this error.

هل كانت مفيدة؟

المحلول

Use your grep pattern with double quotes otherwise shell will treat it as different arguments to grep:

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

There is NO need of extra cat hence I changed it in my answer.

نصائح أخرى

Quote the variable:

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

In general, you should usually quote variables, unless you specifically want the value to undergo word splitting and wildcard expansion.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top