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

관련 정보