私の質問には、以下に関するいくつかの出力ファイルに一致しますFileB)。grepを一つのファイルにしてソートが
FileB:
Programmer
Chemist
Physcist
私は今、何をしたいか
がFILEAからすべてのジョブ・クラスを取得し、各Job-のために新しいファイルを作成している(FILEAは、より多くの人々と冗長な情報で延々と続くと仮定)クラス私は最後になるように:
FileProgrammer
Peter Programmer
John Programmer
Alex Programmer
FileChemist
Frank Chemist
Harold Chemist
George Chemist
FilePhysicist
Charles Physicist
私はジョブズファイルのリストからジョブ名のパターンをgrep
や他の元のファイルに存在するすべてのジョブ名の新しいファイルを作成したいです。
実際には私のリストには56個のユニークエレメントがあり、元のファイルには複数のカラム(タブ区切り)があります。
私が何をしたか、これまでだったこの:
cut -f2 | sort | uniq > Jobs
grep -f(tr '\t' '\n' < "${Jobs}") "${FileA}" > FileA+"${Jobs}"
私はそれぞれの新しいパターンに新しいファイルが作成される一致していることを想定したが、私は増分または反復一切ありませんので、それだけでファイルをコピーすることを実現ファイルの作成。
私のbashの経験はまだ深く開発されていないので、皆さんが私を助けてくれることを願っています。前もって感謝します。
@Update: 入力ファイルは次のようになります。基本的に
4 23454 22110 Direct + 3245 Corrected
3 21254 12110 Indirect + 2319 [email protected]
11 45233 54103 Direct - 1134 Not-Corrected
、私は修正さの7列にステータスがあり、すべてが修正され、その列のすべてのユニークな値のためにという名前のファイルになりたいですあなたの質問のFILEAにあなたが「Physicisを書いたことを
for i in $(cat FileB); do grep $i$ FileA >> File$i; done
注:7.
なぜ「grep」でこれをやりたいのですか? 'awk'を使用できますか? – Inian
もちろん、私はawkを使うことができます - 私はループコンテキストでawkの機能に精通していません。私はいくつかのawkループを試しましたが、やや失敗しました。 – chrys
'Awk'と私の答えを試してください – Inian