使用 awk 对行进行子集化

使用 awk 对行进行子集化

我有一个数据集如下:

Cow_ID  Age DIM
1   1424    0
1   1425    1
1   1426    2
1   1427    3
2   1428    4
2   1429    5
2   1430    6
2   1431    7
3   1432    8
3   1433    9
3   1434    10
3   1435    11
3   1436    12
4   1437    13
4   1438    14
4   1439    15

我想使用 awk 根据 Cow_ID 对该数据进行子集化并将其写入文件。特别是,每个文件还包含大数据集中所示的标头。我现在正在使用这个,但它不起作用:

awk 'Cow_ID=1 {print}' > data1.txt

这是我想要的示例输出:

数据1:

Cow_ID  Age DIM
1   1424    0
1   1425    1
1   1426    2
1   1427    3

数据2:

Cow_ID  Age DIM
2   1428    4
2   1429    5
2   1430    6
2   1431    7

等等。

答案1

这似乎满足您的要求。显示NR(记录号)为1 的行,即标题行加上第一个字段为“1”的任何行。

awk 'NR == 1 || $1 == "1"' file.txt
Cow_ID  Age DIM
1   1424    0
1   1425    1
1   1426    2
1   1427    3
awk 'NR == 1 || $1 == "2"' file.txt
Cow_ID  Age DIM
2   1428    4
2   1429    5
2   1430    6
2   1431    7

相关内容