単純なコマンドだと思いますが、解決策を見つけることができませんでした
タグ付きのファイルを作成したい(多くの行で区切られています)
File1
aaa
bbb
ded
次に、それらのTAGSを(1行ずつ)1つのファイルにgrepし、TargetFileと呼びます。
私がしたことは次のとおりです。
cat File1 | xagrs grep {} TargetFile
TargetFileではgrepを実行しません。どうすればいいですか?
現在使用mobaxtermしています
fgrep -f File1 TargetFile
猫の無用な使用がないことにも注意してください。
いつものように、それを行うには複数の方法があります:
xargs -n 1 grep Targetfile -e < File
cat File1 | xargs -I {} grep {} TargetFile
ファイルのサイズに応じて、これはより高速に実行されます。
cat File1 | parallel -j0 grep {} TargetFile
File1 のタグの数が、並行して実行できるプロセスの数よりも少ない場合、TargetFile はディスクから 1 回だけ読み取られます。TargetFile がディスク キャッシュよりも大きい場合、これはおそらく良い考えです。
GNU Parallel の詳細については、紹介ビデオを参照してください: http://www.youtube.com/watch?v=OpaiGYxkSuQ
他のフォーラムで検索した後、答えを見つけたと思います
> for i in `cat File1` ; do grep $i TargetFile; done
cat File1 | while read tag; do grep $tag TargetFile; done
cat File1 | xagrs -i grep {} TargetFile