Remove uma linha se a regex existe somente na primeira coluna de cada linha em um arquivo csv

1

Eu tenho os seguintes dados delimitados por vírgulas (espaços usados para clareza visual):

 1 2014 23 2352 19.24 7.18
 1 2014 23 2353 19.78 4.65
24 2014 23 2354 20.26 25.34
 1 2014 23 2355 26.65 42.76
 1 2014 23 2356 27.34 56.356
 1 2014 23 2357 29.24 45.4
24 2014 23 2358 30.23 345.27
 1 2014 23 2359 23.23 345.21
 1 2014 24 0000 12.53 1.98
 1 2014 24 0001 7.24  12.3
24 2014 24 0002 15.68 90.8

Gostaria de remover apenas todas as linhas que começam com 24 (ou mantenha todas as linhas que começam com 1, de qualquer forma).

Assim, o resultado desejado seria:

 1 2014 23 2352 19.24 7.18
 1 2014 23 2353 19.78 4.65
 1 2014 23 2355 26.65 42.76
 1 2014 23 2356 27.34 56.356
 1 2014 23 2357 29.24 45.4
 1 2014 23 2359 23.23 345.21
 1 2014 24 0000 12.53 1.98
 1 2014 24 0001 7.24  12.3

Eu tentei

sed '/24/d' (filename)

Mas isso remove todas as instâncias de 24 em todo o arquivo, assim (não desejado!):

1 2014 23 2353 19.78 4.65
1 2014 23 2355 26.65 42.76
1 2014 23 2356 27.34 56.356
1 2014 23 2359 23.23 345.21
    
por geokrowding 28.12.2014 / 13:05

2 respostas

1

Com awk (imprime tudo com 1 no início da linha):

awk '/^1/{print $0}'

Com sed ( -n opção para suprimir a impressão de tudo):

sed -n '/^1/p'

Com grep (talvez não seja a melhor opção para processamento de texto, mas bom o suficiente neste caso):

grep '^1'
    
por 28.12.2014 / 13:21
1

grep -v ^24 para manter apenas as linhas que não começam com 24

    
por 28.12.2014 / 18:27