如何根据搜索模式拆分文件,并且将生成的新文件的文件名将等于用于拆分文件的搜索模式。
目前,我正在使用以下命令来分割文件。
awk '/^GROUP*/{x="F"++i;}{print > x;}' cdw_all_jobs_reduced3.txt
它生成的文件名称为F1,F2等。但我希望文件的名称等于搜索模式行。
即。如果在我的原始文件中,我有以下内容:
GROUP1
xyz
pqr
GROUP2
abc
GROUP3
sdlsa
然后应该通过搜索模式GROUP *&分割新文件。重命名为GROUP1,GROUP2和GROUP3,包含各自的内容。
换句话说,如何根据搜索模式自定义生成(重命名)将要拆分的文件的名称?
答案 0 :(得分:2)
尝试:
awk '/^GROUP[0-9]+$/{x=$0;next}{print > x;}' cdw_all_jobs_reduced3.txt
如果你想要“文件名”删除下一个语句:
awk '/^GROUP[0-9]+$/{x=$0}{print > x;}' cdw_all_jobs_reduced3.txt
答案 1 :(得分:0)
只是给那些可能需要生成大量文件的人的注释。除非您先关闭先前生成的文件,否则命令将崩溃,因此Juan Diego Godoy
的答案的改进版本为:
awk '/^GROUP[0-9]+$/{close(x);x=$0}{print > x;}' cdw_all_jobs_reduced3.txt