我有一个包含1000多行和标题的标签分隔文件。样本由第1列中的值定义。我想按列1将文件拆分为多个文件,但也包括标题。目前,我可以使用以下方法轻松拆分成文件:
awk -F'\t' '{print>$1}' file.tab
这将给我x个文件,每个文件包含与每个样本有关的所有行。但是,我还想在每个文件中包含第1行的标题。我怎么能这样做呢?
感谢。
答案 0 :(得分:3)
命令:
awk -F'\t' 'NR==1 { H=$0; next } {if(!d[$1]) print H>$1; print>$1; d[$1]=1 }' file.tab
示例输入:
FN DATA
1.txt abc
2.txt bcd
1.txt xyz
的1.txt:
FN DATA
1.txt abc
1.txt xyz
2.txt:
FN DATA
2.txt bcd
答案 1 :(得分:3)
另一个类似的awk
awk -F'\t' 'NR==1{h=$0; next} {print (a[$1]++?"":h ORS) $0 > $1}' file
技巧是跟踪由文件名密钥索引的标题。如果文件按键排序,则有一个更简单的解决方案。