如何使用列数作为标准从一个文件创建两个文件
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。
我需要从一个文件创建两个文件。条件是: 如果输入行中的列数等于 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。