Opdrachtregelhulpprogramma's zoals grep en ack-grep zijn ideaal voor het doorzoeken van platte-tekstbestanden voor patronen die overeenkomen met een opgegeven reguliere expressie. Maar heb je ooit geprobeerd deze hulpprogramma's te gebruiken om naar patronen in een PDF-bestand te zoeken? Nou, niet doen! U krijgt geen resultaat aangezien deze hulpmiddelen geen PDF-bestanden kunnen lezen; ze lezen alleen tekstbestanden in platte tekst.

pdfgrep, zoals de naam al doet vermoeden, is een klein commandoregelhulpprogramma dat het mogelijk maakt om naar tekst in een PDF-bestand te zoeken zonder het bestand te openen. Het is waanzinnig snel - sneller dan de zoekfunctie van vrijwel alle PDF-documentviewers. Een groot verschil tussen grep en pdfgrep is dat pdfgrep op pagina's werkt, terwijl grep op regels werkt. Het drukt ook een enkele regel meerdere keren af ​​als er meer dan één overeenkomst op die regel wordt gevonden. Laten we eens kijken hoe we de tool precies kunnen gebruiken.

Installatie

Voor Ubuntu en andere Linux-distro's op basis van Ubuntu, is het vrij eenvoudig:

 sudo apt pdfgrep installeren 

Voor andere distro's moet je pdfgrep als input voor de pakketbeheerder pdfgrep, en dat zou het moeten installeren. Je kunt ook de GitLab-pagina van het project bekijken voor het geval je met de code wilt spelen.

De testrun

Nu dat je de tool hebt geïnstalleerd, laten we gaan voor een testrun. De opdracht pdfgrep heeft de volgende indeling:

 pdfgrep [OPTIE ...] PATROON [BESTAND ...] 

OPTION is een lijst met extra attributen om de opdracht te geven, zoals -i of --ignore-case, die beide het onderscheid tussen het reguliere patroon en het eenmaal overeenkomende patroon uit het bestand negeren.

PATROON is slechts een uitgebreide reguliere expressie.

BESTAND is alleen de naam van het bestand, als het zich in dezelfde werkmap bevindt, of het pad naar het bestand.

Ik heb het commando over de officiële documentatie van Python 3.6 uitgevoerd. De volgende afbeelding is het resultaat.

De rode markeringen geven alle plaatsen aan waar het woord 'wachtrij' werd aangetroffen. Het doorgeven van -i als optie aan de opdracht bevatte overeenkomsten van het woord "Wachtrij". Bedenk dat het geval er niet toe doet wanneer -i als een optie wordt doorgegeven.

Extras

pdfgrep heeft nogal wat interessante opties om te gebruiken. Ik zal hier echter maar een paar behandelen.

  • -c of --count : dit onderdrukt de normale uitvoer van overeenkomsten. In plaats van de lange uitvoer van de overeenkomsten weer te geven, wordt alleen een waarde weergegeven die het aantal keren vertegenwoordigt dat het woord in het bestand werd aangetroffen
  • -p of --page-count : deze optie drukt de paginanummers af van overeenkomsten en het aantal --page-count dat het patroon op de pagina voorkomt
  • -m of --max-count [aantal]: specificeert het maximale aantal overeenkomsten. Dat betekent dat wanneer het aantal overeenkomsten is bereikt, het commando het lezen van het bestand stopt.

De volledige lijst van ondersteunde opties is te vinden op de man-pagina's of in de pdfgrep online documentatie. Vergeet niet dat pdfgrep meerdere bestanden op hetzelfde moment kan doorzoeken, voor het geval u met enkele bulkbestanden werkt. De standaardkleur voor het markeren van overeenkomsten kan worden gewijzigd door de omgevingsvariabele GREP_COLORS te wijzigen.

Conclusie

De volgende keer dat je denkt aan het openen van een PDF-bestand om iets te zoeken. denk aan het gebruik van pdfgrep. De tool is handig en bespaart u tijd.