質問: ->`cat A.txt| xargs -I {} git grep --name-only "{} hoge"` ↑これだと結果ゼロになります しかし、 ->`echo "aaa" | xargs -I {} git grep --name-only "{} hoge"` ↑A.txtの中身をechoとパイプで渡すと結果はゼロではなく「aaa hoge」が含まれるファイル名が出ます。 テキストファイルの中身を一行ずつgit grepするにはどうしたら良いのでしょうか?
回答: その`A.txt`ですが、改行コードがCRLF(\r\n)になってたりしませんか。 そうすると、xargsで処理される時、CR混じりの文字列がgitに渡されるため、意図通りに動かないことが考えられます。 `$ od -tc A.txt` 等のコマンドで確認を。 もしCRLFの場合、改行コードをLFのみにしてテキストファイルを作り直しても良いですが、tr コマンドでCRのみを消しても良いです。`tr -d \\r < A.txt | xargs ~` のように。