我正在尝试在第一列上拆分覆盖文件(制表符分隔符),以便每个染色体都有一个特定的文件。
我已经完成了
cat file.coverage | awk ' { if ($1 == "chrn"){print}}'
但是这样我就可以为n样本做n次。
我希望以递归的方式使用它:读取第一列,而chr是相同的,将其打印在文件A
中,否则打印在文件B
中等等。
我怎样才能做到这一点?
答案 0 :(得分:1)
正如@Tensibai在评论中指出的那样,你可以做到 -
awk '{print >> $1".log"}' file.coverage
解释 -
awk
一行内联只是将行附加到根据第一列中的索引命名的文件中。
您不需要cat filename | awk
。 awk
能够自行读取文件。这对cat
无用。
另一方面(对于您编写的未来代码),您的初始行可以缩短为 -
awk '$1 == "chrn"' file.coverage
无需if
。