grep - byte-offset não me dá o deslocamento de bytes?

1

eu corro

grep -b --byte-offset 'EXTH' Agent_of_Change.mobi

mas eu só recebo "arquivo binário Agent_of_Change.mobi corresponde". Como posso obter o deslocamento de bytes?

    
por aneuryzm 03.04.2014 / 14:16

2 respostas

3

grep retornaria, por padrão, apenas correspondências para arquivos binários.

Você precisaria informar grep para tratar arquivos binários como texto.

grep -a -b 'EXTH' Agent_of_Change.mobi

No entanto, grep avisa sobre as possíveis consequências:

          option.  If TYPE is text, grep processes a binary file as if  it
          were  text;  this is equivalent to the -a option.  Warning: grep
          --binary-files=text might output binary garbage, which can  have
          nasty  side  effects  if  the  output  is  a terminal and if the
          terminal driver interprets some of it as commands.
    
por 03.04.2014 / 14:25
2

Adicione -a para forçar a impressão de correspondências, mesmo que não pareçam ser imprimíveis.

Adicione -o e imprime apenas o "EXTH" em vez da linha. Isso também altera o deslocamento de bytes - ele imprime o deslocamento de "EXTH" em vez do deslocamento do início da linha que contém o "EXTH". Se o arquivo não é realmente feito de linhas, isso será uma melhoria!

Ou use perl -n0777e 'print pos()-length($&),"\n" while /EXTH/g' para substituir sua dependência do GNU grep por uma dependência em algo mais universal ... (Aviso: faz slurps de todo arquivo na memória, pode ser desagradável para arquivos grandes)

    
por 03.04.2014 / 14:36

Tags