Ik heb een aantal binaire bestanden en ik weet dat er binnen deze binaire bestanden strings zijn die ik wil vinden.

Ik wil een:

grep -lir "the string I am looking for" 

doen en een lijst krijgen van alle binaire bestanden in een bepaalde directory die die string bevatten maar grep -lir werkt blijkbaar niet met deze bestanden.

Is er een commando dat dit soort zoekopdrachten vanaf de terminal kan uitvoeren?

Antwoord

Met GNU grep , u kunt de optie -a gebruiken om binaire bestanden als tekstbestanden te laten behandelen:

grep -ali -- string file 

Als uw grep-versie -a niet ondersteunt, kunt u ack . Met ack 1.x moet u de optie -a opnemen, met ack 2.x hoeft u dat niet te doen, aangezien bij het zoeken standaard een niet-tekstbestand wordt opgenomen (alleen genegeerd niet- tekstbestand als u geen bestanden hebt opgegeven).

Opmerkingen

  • Lees ik ack ' s zelfbeschrijving? (in de handleiding) " ack 2.x doorzoekt elk normaal, niet-binair bestand dat niet expliciet genegeerd [door blah blah] " Dus het klinkt alsof ack 2.x nog steeds vroegtijdig moet stoppen met het lezen van een bestand als de inhoud er binair uitziet.
  • @PeterCordes: Die ' s is opgetreden wanneer er geen bestanden zijn geselecteerd. Probeer ack grep /bin/grep en je krijgt het resultaat. Ik heb mijn antwoord bijgewerkt om verwarring te voorkomen.
  • Gebruik het strings-commando om de strings uit je binaire bestand te halen.

Answer

Het commando strings zal extr handelt alle ascii-gegevens uit een bestand, als u vervolgens grep de uitvoer ervan instelt, kunt u naar uw gegevens zoeken:

strings <filename> | grep "search text" 

Reacties

  • Dit zou het geaccepteerde antwoord moeten zijn. Dit binaire bestand is geschikt voor deze taak.
  • @xeon: Het ' is niet altijd goed om strings , lees hier voor meer details.
  • Aangezien het doel is om te bepalen welke binaries de tekenreeks bevatten, strings -f zou geschikter zijn.
  • Dit is een beter antwoord.
  • het beste antwoord. heel erg bedankt

Antwoord

Uw vraag gaat over het vinden van binaire bestanden die een patroon bevatten (en we hebben al zeer goede antwoorden!). Complementair willen we misschien de occurrences krijgen.

Ik gebruik vaak

grep -aPo ".{0,20}pattern.{0,20}" binfile 

om een omringende context van 20 tekens te krijgen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *