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

时间:2017-03-18 14:59:03

标签: linux edi bigdata

我需要从一个文件创建两个文件。条件是: 如果输入行中的列数等于11,则行将复制到output1。 如果输入行中的列数等于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。

OUTPUT1

ID01 rs01 A 1
ID03 rs01 B 2

OUTPUT2

ID02 rs01 1
ID04 rs01 0

但在我的情况下,一行的数量是45927948,一列的最大数字是11和最小10。

1 个答案:

答案 0 :(得分:0)

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

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