我的問題涉及: 我有一個文件:一個文件和排序的grep匹配幾個輸出文件
FileA:
Peter Programmer
Frank Chemist
Charles Physicist
John Programmer
Alex Programmer
Harold Chemist
George Chemist
我現在得到了FILEA所有作業信息,並將其保存到一個唯一列表( FILEB)。
FileB:
Programmer
Chemist
Physcist
(假設FILEA的推移和與更多的人,冗餘信息)
我想現在要做的就是從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列中的狀態命名修正和一切,所以列的每一個獨特的價值7.
你爲什麼要用'grep'來做這個?你可以使用awk嗎? – Inian
當然,我可以使用awk - 我只是不熟悉awk在循環上下文中的功能。我嘗試了一些awk循環,但有些失敗。 – chrys
用'Awk'試一下我的答案 – Inian