1

このコマンドを使用しています

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

ファイル名にスペースが含まれているためにエラーが発生することはわかっています。このエラーを取り除く方法を知りたいです。

4

2 に答える 2

5

二重引用符を使用して grep パターンを使用しないと、シェルはそれを grep の別の引数として扱います。

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

余分なものは必要ないcatので、回答で変更しました。

于 2013-10-21T17:52:49.920 に答える
2

変数を引用します。

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

一般に、値を単語分割およびワイルドカード展開する必要がない限り、通常は変数を引用符で囲む必要があります。

于 2013-10-21T17:52:42.883 に答える