Grep célula correspondente do arquivo csv e índice dessa linha

1

Eu tenho o arquivo csv e quero ver números que começam com 0.99 e o índice de suas linhas, que é a primeira célula dessa linha.

Isso é o que eu tenho até agora:

cat fil.csv | grep '0\.99'| tee > (cut -d, -f1) | tr , \n |  grep '0\.99'

entrada:

id, f1,f2,f3
f1,0.54,0.12,0.432
f2,0.1231,0.99999,0.99832
f3,0.121,nan,0.12321
f4,0.99712,0.121,0.434

output desejado: idealmente eu quero isso, mas seria muito complexo para oneliner:

f2,0.99999,0.99832
f4,0.99712

Eu posso me conformar com isso, que é o que eu quero do comando que escrevi:

f2
0.99999
0.99832
f4
0.99712
    
por kirill_igum 17.11.2014 / 16:34

2 respostas

1

com o awk:

$ awk -F, '$0~"0\.99*"{printf $1;for(i=1;i<=NF;i++){if($i~"0\.99*"){printf ","$i}};printf "\n"}'
f2,0.99999,0.99832
f4,0.99712

De uma forma mais legível:

$ awk -F, '
      $0~"0\.99*"{
          printf $1
          for(i=1; i<=NF; i++){
              if($i~"0\.99*"){
                  printf ","$i
              }
          }
          printf "\n"
      }
  '
    
por 17.11.2014 / 19:38
0

Se você puder usar perl :

$ perl -F, -anle '
  BEGIN { $, = "," }
  @h = grep { /^0\.99/ } @F;
  print $F[0], @h if @h;
' file
f2,0.99999,0.99832
f4,0.99712
    
por 17.11.2014 / 18:12