AWK打印专用线&头

时间:2018-04-11 16:23:57

标签: awk

我有一个包含1000多行和标题的标签分隔文件。样本由第1列中的值定义。我想按列1将文件拆分为多个文件,但也包括标题。目前,我可以使用以下方法轻松拆分成文件:

awk -F'\t' '{print>$1}' file.tab

这将给我x个文件,每个文件包含与每个样本有关的所有行。但是,我还想在每个文件中包含第1行的标题。我怎么能这样做呢?

感谢。

2 个答案:

答案 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

技巧是跟踪由文件名密钥索引的标题。如果文件按键排序,则有一个更简单的解决方案。