Subconjunto de linhas com awk [duplicado]

0

Eu sou novo no Linux, mas meu trabalho exige que eu faça alguma tarefa específica agora, espero que você me ajude por isso. Eu tenho um conjunto de dados como segue:

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

Eu quero usar o awk para subdividir esses dados de acordo com o Cow_ID e gravá-los em um arquivo. Especialmente, cada arquivo também contém o cabeçalho, conforme mostrado no conjunto de big data. Eu estou usando isso neste momento, mas não funciona:

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

Obrigado pela sua ajuda.

Esta é a saída de exemplo que desejo ter:

data1:

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

Dados2:

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

e assim por diante. Obrigado

    
por hieu 02.03.2016 / 23:26

1 resposta

0

Isso parece cobrir sua exigência. Mostra linhas em que NR (número de registro) é 1, ou seja, a linha de cabeçalho mais as linhas em que o primeiro campo é "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
    
por 02.03.2016 / 23:51