如何使用列数作为标准从一个文件创建两个文件

How to created two file from one file, using as criterion the number of column

我需要从一个文件创建两个文件。条件是: 如果输入行中的列数等于 11,则这些行将复制到输出 1。 如果输入行中的列数等于 10,则这些行将复制到 output2。

示例 输入 列较少:

Id_animal Id_SNP Farm Allele
ID01 rs01 A 1
ID02 rs01 1
ID03 rs01 B 2
ID04 rs01 0

在这种情况下,第 1 行和第 3 行将转到 output1,第 2 行和第 3 行将转到 output2。

输出1

ID01 rs01 A 1
ID03 rs01 B 2

output2

ID02 rs01 1
ID04 rs01 0

但在我的例子中,行数为 45927948,列数最大值为 11,最小值为 10。

使用 awk 你可以这样做 awk -f script.awk input 而 script.awk 是:

NR == 1 { next }
NF == 4 { print > "output1" }
NF == 3 { print > "output2" }
  • 修改NF条件中的4和3(行中的字段数)。
  • 第一行跳过 header。