我的问题涉及: 我有一个文件:一个文件和排序的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